如何在创建方法上将推送数据添加到Mongoose DB中的数组?

时间:2015-04-25 03:45:50

标签: node.js mongodb express mongoose

我正在尝试使用create方法中的数组中的对象初始化我的Mongoose Schema。

我的架构如下所示:

var imageSchema = new mongoose.Schema({
    url: {type:String},
    text: {type:String}
});

module.exports = todo.model('Todo', new mongoose.Schema ({
    name : {type : String, default: ''},
    dataArr : [imageSchema]
}));

我的路线如下:

app.post('/api/todos', function(req, res) {

    Todo.create({
        name : req.body.name,
    },

    { $push : { dataArr : {  url : 'foo' , text : 'bar'} } },

    function(err, todo) {
        if (err) {
            res.send(err);
        }
    });
});

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我非常确定创建方法不接受第二个参数,您可以在其中提供$ push。

由于您正在创建对象,因此只需天真地设置数组:

app.post('/api/todos', function(req, res) {

    Todo.create({
        name : req.body.name,
        dataArr : [{  url : 'foo' , text : 'bar'}] 
    }, 
    function(err, todo) {
        if (err) {
            res.send(err);
        }
    });
});

答案 1 :(得分:0)

您可以将其作为数组添加到用于创建模型实例的对象中:

app.post('/api/todos', function(req, res) {
  Todo.create({
    name: req.body.name,
    dataArr: [{url: 'foo', text: 'bar'}]
  }, function(err, todo) {
    if (err) { res.send(err); }
  });
});