javascript - 我的应用程序不会更新数组中的值(Mongoose)

标签 javascript node.js mongoose

它将更新除数组中的值之外的所有值,但它不会这样做。

这是我的更新

exports.update = function(req, res) {
    if (req.body._id) {
        delete req.body._id;
    }
    plan.findById(req.params.id, function(err, plan) {
        if (err) {
            return handleError(res, err);
        }
        if (!plan) {
            return res.send(404);
        }
        var updated = _.merge(plan, req.body);
        updated.save(function(err) {
            if (err) {
                return handleError(res, err);
            }
            return res.json(200, plan);
        });
    });
};

这是我的架构

var ContactSchema = new Schema({
    location: {
        type: String,
        required: true
    },
    total_cost: {
        type: Number,
        required: true
    },
    detailed_expenses: {
        transport: {
            type: String,
            required: true,
            trim: true
        },
        Hotel: {
            type: Number,
            required: true,
            trim: true
        },
        Food: {
            type: Number,
            required: true,
            trim: true
        },
        Attractions: {
            type: Number,
            required: true,
            trim: true
        }
    },
    holiday_type: {
        type: String,
        required: true
    },
    transport_type: {
        type: String,
        required: true
    },
    updated: {
        type: Date,
        default: Date.now
    }
});

最佳答案

var updated = _.merge(plan, req.body);

由于 updated 是简单对象,而不是 ContactSchema 的实例,因此它不会包含 save 函数。因此,您需要使用 updated 创建 ContactSchema 实例,然后只有您可以使用 save 函数。以下是您的更新代码。

exports.update = function(req, res) {
if (req.body._id) {
    delete req.body._id;
}
plan.findById(req.params.id, function(err, plan) {
    if (err) {
        return handleError(res, err);
    }
    if (!plan) {
        return res.send(404);
    }
    var updated = new plan(req.body); //if req.body is document to be saved
    updated.save(function(err) {
        if (err) {
            return handleError(res, err);
        }
        return res.json(200, plan);
    });
});

};

关于javascript - 我的应用程序不会更新数组中的值(Mongoose),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43115722/

相关文章:

javascript - 使用javascript渐进增强隐藏元素

javascript - Android 的某种 JavaScript 的 preventDefault

node.js - Apollo 服务器健康检查没有被调用

在 Mongoose 中将属性定义为 ObjectId 时出现 typescript 错误

javascript - 尝试在Compoundjs中定义 Assets 编译器并收到未定义的方法错误

javascript - 只检测鼠标滚动一次

node.js - Electron 锻造,制作命令: override default values

node.js - Node.js 和 Express 中的表单流程

node.js - 在 Mongoose 中使用某些条件查找时获取空数组

mongodb - 如何使用 feathersjs 处理多对少的 mongodb 关系?