MongoDB:存储模型数组

时间:2016-07-11 11:52:58

标签: javascript node.js mongodb mongoose mongoose-schema

我已宣布以下模型:

香蕉

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因值而失败&#34; ...&#34;在user.bananas。   name:CastError,   善良:&#39;阵列&#39;,   值:[对象],   路径:user.bananas,   原因:[对象]

1 个答案:

答案 0 :(得分:0)

由于我不需要将香蕉存储到db,我为此创建了一个解决方法。如果有必要单独存储香蕉,则可以通过对象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();
}

它似乎正在发挥作用。