【问题标题】:MongoDB: Store array of modelsMongoDB:存储模型数组
【发布时间】:2016-11-13 08:39:50
【问题描述】:

我已经声明了以下模型:

香蕉

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:在 user.bananas 中,值“...”转换为数组失败。 名称:CastError, 种类:'数组', 值:[对象], 路径:user.bananas, 原因:[对象]

【问题讨论】:

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


    【解决方案1】:

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

    而且它似乎正在工作。

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多