0

以here为例

http://mongoosejs.com/docs/populate.html

如果我尝试调整它以使“粉丝”也包含评分

var db = require('houselib/db');
var Schema = db.Schema;
var mongoose = db.mongoose;

var PersonSchema = new Schema({
    name    : String
    , age     : Number
    , stories : [{ type: Schema.ObjectId, ref: 'Story' }]
});

var StorySchema = new Schema({
    _creator : { type: Schema.ObjectId, ref: 'Person' }
    , title    : String
    , fans     : [{ type: Schema.ObjectId, ref: 'Person', rating: Number}]
});

var Story  = mongoose.model('Story', StorySchema);
var Person = mongoose.model('Person', PersonSchema);

var aaron = new Person({ name: 'Aaron', age: 100 });

aaron.save(function (err) {
    if (err) throw err;

  var story1 = new Story({
      title: "A man who cooked Nintendo"
    , _creator: aaron._id
    , fans: [{type: aaron._id, rating: 4}]
  });

  story1.save(function (err) {
    if (err) throw err;
        Story
        .find({ _creator: aaron._id })
        .populate('_creator') // <-- not really necessary
        .run(function (err, stories) {
            if (err) throw err;
            console.log('The stories JSON is an array: ', stories);
        })
  });

})

我收到以下错误

CastError:值“[object Object]”的未定义转换失败

4

2 回答 2

0

文档说手动链接优于 DBRef

http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-SimpleDirect%2FManualLinking

于 2012-05-22T07:43:32.880 回答
0

story.fans是一个对象 ID 数组。objectids 不能有评级。您需要将评级添加到 Person 模式而不是故事模式。

var PersonSchema = new Schema({
    name    : String
    , age     : Number
    , rating: Number
    , stories : [{ type: Schema.ObjectId, ref: 'Story' }]
});
于 2012-05-25T18:00:42.913 回答