猫鼬findByIdAndUpdate不更新我的mongoDB

时间:2019-04-20 20:04:21

标签: node.js mongoose

您好,我是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中的数据会发生变化

2 个答案:

答案 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
})