首页 > 解决方案 > '$set' 是空的,即使它不是

问题描述

我在更新 MongoDB 中的文档时遇到问题...在 params.sendingMethodPushTime 和 SmsTime 我收到一个新的 Date();

尝试在更新函数本身内设置 $ 集并尝试使用硬编码值

userScheme.statics.updateAlertSendingTimes = function (params, cb) {
    var query = {uId: params.uIds};
    var set = {};
    if (params.alertType) {
        set['alertSendingTimes'] = {};
        set['alertSendingTimes'][params.alertType] = {};
        set['alertSendingTimes'][params.alertType]['push'] = params.sendingMethodPushTime;
        set['alertSendingTimes'][params.alertType]['sms'] = params.sendingMethodSmsTime;
        var update = {
            '$set': set
        }
        this.update(query, update, {upsert: true}, cb);
    } else {
        cb(null)
    }
};

$set 应该通过并且 MongoDB 文档已更新,但相反,我得到 $set 为空等

编辑:我的猫鼬版本是 4.13.4,我的节点版本是 6.16,params.alertType 是一个动态接收的字符串(在我的例子中是 '​1' 或 '2')

标签: javascriptmongodbmongoose

解决方案


问题出在计划上……它是警报而不是警报


推荐阅读