MongoDB: 存储模型数组

MongoDB: Store array of models

我已声明以下型号:

香蕉

var banana = new mongoose.Schema({
    src: {
        type: String,
        max: 1000,
        default: "yabadaba"
});

用户

var user = new mongoose.Schema({
    name: String,
    bananas: [banana]
});

我在向用户集合中插入数据时遇到问题。这是代码:

var data = [{
    name: "Batman",
    bananas: [
        new banana({src: "nananana"}),
        new banana({src: "nana"})
    ]
}, {
    name: "Robin",
    bananas: [
        new banana({src: "meh"})
    ]
}];

for(var i=0, arrLen=data.length; i<arrLen; i++){
    var item = new User(data[i]);
    item.save();
}

然后我就报错了...

CastError: Cast to Array failed for value "..." at user.bananas. name: CastError, kind: 'Array', value: [Object], path: user.bananas, reason: [Object]

因为我不需要将香蕉存储到数据库中,所以我为此创建了一个解决方法。如果需要单独存储香蕉,那么可以通过对象id来引用它们。

所以我删除了 Bananas 模型并修改了 User 模型如下。

用户

var user = new mongoose.Schema({
    name: String,
    bananas: [{
        src: {
            type: String,
            max: 1000,
            default: "yabadaba"
        }
    }]
});

我插入的值如下:

var data = [{
    name: "Batman",
    bananas: [
        {src: "nananana"},
        {src: "nana")
    ]
}, {
    name: "Robin",
    bananas: [
        {src: "meh"}
    ]
}];

for(var i=0, arrLen=data.length; i<arrLen; i++){
    var item = new User(data[i]);
    item.save();
}

它似乎起作用了。