MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Dlaczego moje referencje nie wypełniają dokumentów?

Po prostu testuję twoje przykładowe kody, wykonując następujące zapytanie Like.findOne({}).populate('user_id').exec(callback); wydaje się działać dobrze.

Schemat:

var PersonSchema = new mongoose.Schema({
    t: String
}, {collection: 'persons'});

var User = mongoose.model('User', PersonSchema.extend({
  _id: String,
  name: String
}));

var ParentSchema = new mongoose.Schema({
    s: String
}, {collection: 'parent'});

var Like = mongoose.model('Like', ParentSchema.extend({
  _id: String,
  user_id: {
    type: String,
    ref: 'User'
  }
}));

Wstaw dane do bazy danych,

var user = new User({
    t: 't1',
    _id: '1234567',
    name: 'test'
});

var like = new Like({
    s: 's1',
    _id: '23456789',
});

user.save(function(err, u){
    if(err)
        console.log(err);
    else {
        like.user_id = u._id;
        console.log(like);
        like.save(function(err) {
            if (err)
                console.log(err);
            else
                console.log('save like and user....');
        });
    }
});

Zapytanie przez

Like.findOne({}).populate('user_id').exec(function(err, doc) {
    if (err)
        console.log(err);
    else
        console.log(doc);
});

Wynik to

{ _id: '23456789',
  __t: 'Like',
  user_id: { _id: '1234567', __t: 'User', t: 't1', name: 'test', __v: 0 },
  s: 's1',
  __v: 0 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wypełnij na podstawie stanu w manguście, mongoDB

  2. Używanie operatora pozycyjnego z dwupoziomowymi hierarchiami w Mongo

  3. aktualizacja przez id nie działa w manguście

  4. Denormalizacja za pomocą Mongoose:Jak zsynchronizować zmiany

  5. MongoDB Wstaw zbiorczy Ignoruj ​​duplikat