Mongoose $ addToSet返回新列表

时间:2015-05-30 18:28:23

标签: node.js mongodb mongoose

我有一个使用mongoose 4.0.1的问题

我正在尝试将新图片对象添加到模型内的数组中。这是我的终端实际上​​正在完成工作的代码:

// Add new images
exports.pictures = function(req, res) {

    Incident.findByIdAndUpdate(
        req.params.id,
        {$addToSet: {"pictures": {$each: req.body}}},
        {new: true},
        function(err, incident) {
            if (err) { return handleError(res, err); }
            return res.send(201).json(incident.pictures);
        }
    );
};

问题:回调对象(事件)存储找到并更新的模型的所有信息。但我想只返回创建的新数组条目。

如何接收操作的实际更改而不是存储图片数组的整个对象?

1 个答案:

答案 0 :(得分:0)

我通过为图片创建新架构并添加对事件模型的引用来解决问题。

端点也发生了变化:

  1. 为图片数组创建新的图片实例
  2. 按ID
  3. 查找事件
  4. 将图片实例的引用保存到事件中的数组
  5. 返回图片实例的ID
  6. var _ = require('lodash');
    
    // Add new images
    exports.pictures = function(req, res) {
    
        Picture.create(req.body, function(err, pictures) {
            if (err) { return handleError(res, err); }
    
            Incident.findByIdAndUpdate(
                req.params.id,
                {$addToSet: {"pictures": {$each: pictures}}},
                function(err) {
                    if (err) { return handleError(res, err); }
    
                    var pictureIds = _.map(pictures, '_id');
                    return res.status(201).json(pictureIds);
                }
            );
        });
    };