简体   繁体   English

MongoDB:存储模型数组

[英]MongoDB: Store array of models

I have declared following models: 我声明了以下模型:

Banana 香蕉

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

User 用户

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

And I have problems inserting data to user collection. 而且在将数据插入用户集合时遇到问题。 Here's the code: 这是代码:

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();
}

And I it throws an error... 我抛出一个错误...

CastError: Cast to Array failed for value "..." at user.bananas. CastError:在user.bananas中将值“ ...”转换为数组失败。 name: CastError, kind: 'Array', value: [Object], path: user.bananas, reason: [Object] 名称:CastError,类型:“数组”,值:[Object],路径:user.bananas,原因:[Object]

As I did not need to store bananas to db, I created a workaround for this. 由于不需要将香蕉存储到db,因此我为此创建了一种解决方法。 If it was necessary to store bananas separately, then it is possible to reference them via object id. 如果有必要单独存储香蕉,则可以通过对象ID引用它们。

So I removed Bananas model and modified User model as follows. 因此,我删除了Bananas模型并修改了User模型,如下所示。

User 用户

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

I inserted values as follows: 我插入的值如下:

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();
}

And it seems to be working. 它似乎正在工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM