首页 > 解决方案 > model.findByIdAndUpdate() 没有更新

问题描述

我正在尝试将新数据添加到用户模型中,并且很难开始findByIdAndUpdate()工作。它不会使用新对象更新模型。

这是我正在调用findByIdAndUpdate()并尝试添加对象的地方:

    const User = require('../../models/api/user');

    const customer = {
        name: 'Quick Pizza & Subs',
        address: '1234 Example Lane',
        zip: 432123
    };

    User.findByIdAndUpdate(userId, customer, { new: true }, (err, user) => {
        if(err) { console.log(err) };
    });

在上面的代码块中,我可以验证我是否使用该userId变量找到了正确的用户。当我console.log(user)找回我正在寻找的用户时。我只是无法弄清楚为什么传入的对象没有更新到找到的用户集合。

用户架构:

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    username: {
        type: String,
        default: ''
    },
    password: {
        type: String,
        default: '',
    },
    registerDate: {
        type: Date,
        default: Date.now()
    }
});

module.exports = mongoose.model('User', UserSchema);

根据猫鼬文档,这就是我需要做的一切:

Model.findByIdAndUpdate(id, { name: 'jason bourne' }, options, callback)

在我的代码中,我看不出我在做什么不同。当我在 Postman 中测试路线时,我没有收到任何错误。任何人都可以对此有所了解吗?

标签: javascriptnode.jsmongodbmongoose

解决方案


我没有使用客户字段添加更新的用户架构。工作模式是:

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    username: {
        type: String,
        default: ''
    },
    password: {
        type: String,
        default: '',
    },
    customer: {
        type: Object,
        default: ''
    },
    registerDate: {
        type: Date,
        default: Date.now()
    }
});

module.exports = mongoose.model('User', UserSchema);

推荐阅读