您好,我是nodejs和mongoose的新手。 我正在我的Web应用程序上工作,并试图使猫鼬findByIdAndUpdate不更新我的mongoDB,我在做什么错? 我正在尝试更新令人兴奋的用户详细信息。
我尝试了许多解决此问题的解决方案,例如许多查询,但都无济于事。 即时通讯与邮递员试图更改此字段发出请求: 名字 姓 用户名 电子邮件 电话 到路线: http://localhost:5000/api/users/5cbb60157b07f13ec88070c4
但是我总是得到旧用户而不是更新用户作为响应
api/users :
const express = require('express');
const router = express.Router();
const User = require('../../models/User');
const bcrypt = require('bcryptjs');
const validateCreateUserInput = require('../../validation/createUser');
const passport = require('passport');
router.post('/:id', passport.authenticate('jwt', { session: false }), (req, res) => {
const userDetails = {};
if (req.body.firstName) userDetails.firstName = req.body.firstName;
if (req.body.lastName) userDetails.lastName = req.body.lastName;
if (req.body.username) userDetails.username = req.body.username;
if (req.body.email) userDetails.email = req.body.email;
if (req.body.phone) userDetails.phone = req.body.phone;
User.findByIdAndUpdate(
{ _id: req.params.id },
{ new: true },
{ $set: userDetails })
.then(user => {
res.json(user)
})
.catch(err => console.log(err));
})
module.exports = router;
用户模型:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserSchema = new Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
},
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
email: {
type: String,
required: true
},
phone: {
type: String,
required: true
},
createdAt: {
type: Date,
default: Date.now
},
updatedAt: {
type: Date,
default: Date.now
}
})
module.exports = User = mongoose.model('users', UserSchema);
我希望mongoDB中的数据会发生变化
答案 0 :(得分:0)
如果您按以下方式更改代码,它将起作用。 Mongodb Shell操作中使用的“ $ set”语句不与“ Mongoose”一起使用。
df %>% group_indices(id, dayweek)
答案 1 :(得分:0)
使用$ set时,可以使用'update'方法。 示例:
User.update({
_id: Schema.Types.ObjectId(req.params.id)
},{
Key: value
})