猫鼬-findByIdAndUpdate-不适用于req.body [英] Mongoose - findByIdAndUpdate - doesn't work with req.body

查看:225
本文介绍了猫鼬-findByIdAndUpdate-不适用于req.body的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在通过mongoose更新mongodb中的文档时遇到问题.

I have a problem with update documents in mongodb over mongoose.

我的模特下面:

var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');

var UserSchema = new mongoose.Schema({
    first_name:{
        type: String
    },
    last_name:{
        type: String
    },
    email:{
        type: String,
        unique: true,
        required: true
    },
    password:{
        type: String,
        required: true
    },
    is_active:{
        type: Boolean,
        default: true
    },
    last_login:{
        type: Date
    }
});
module.exports = mongoose.model('User', UserSchema);

下面的控制器放置函数:

Controller put function bellow:

exports.updateUser = function (req, res) {
    console.log(req.body);
    User.findByIdAndUpdate(req.body.user_id, {$set:req.body}, function(err, result){
        if(err){
            console.log(err);
        }
        console.log("RESULT: " + result);
    });
    res.send('Done')
}

控制台上的输出:

Listening on port 3000... { first_name: 'Michal', last_name: 'Test' } 
PUT /api/users/54724d0fccf520000073b9e3 200 58.280 ms - 4

打印的参数作为表单数据(键值)提供.看来这至少对我没有用,这是怎么了?

The printed params are provided as form-data (key-value). Looks that is not working at least for me any idea what is wrong here?

推荐答案

您必须使用req.params.user_id代替req.body.user_id

exports.updateUser = function (req, res) {   
    console.log(req.body);

    User.findByIdAndUpdate(req.params.user_id,{$set:req.body}, function(err, result){
        if(err){
            console.log(err);
        }
        console.log("RESULT: " + result);
        res.send('Done')
    });
};

这篇关于猫鼬-findByIdAndUpdate-不适用于req.body的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆