Узел: Ошибка при обновлении данных: user.update: Возвращает ноль - PullRequest
0 голосов
/ 06 апреля 2020

когда я использую запрос user.update, он не обновляет ни одного пользователя. он возвращает ноль. я хочу набрать sh Array в моей существующей записи

модель:

var mongoose = require('mongoose')
var Schema = mongoose.Schema;
var bcrypt = require('bcrypt')

var schema = new Schema({
    email: { type: String, require: true },
    username: { type: String, require: true },
    password: { type: String, require: true },
    creation_dt: { type: String, require: true },
    tasks:[{type:{type:String}}]
},

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

Это Model, которое я использую, и я хочу набрать sh некоторые данные в tasks[]

код:

router.post('/newTask', function (req, res, next) {
  var dataa = {
    pName: req.body.pName,
    pTitle: req.body.pTitle,
    pStartTime: req.body.pStartTime,
    pEndTime: req.body.pEndTime,
    pSessionTime: req.body.pSessionTime
  }

  var usr = new User(req.user)
  usr.update(
    {_id:req.user._id},
    {$push:{tasks:dataa}}
  )
  console.log(usr)
  try {
    doc = usr.save();
    return res.status(201).json(doc);
  }
  catch (err) {
    return res.status(501).json(err);
  }
})

_id:req.user.id возвращает идентификатор выхода, и я хочу указать sh данные, которые пользователь будет публиковать и показывать пользователю speci c data

Вывод:

Output Может кто-нибудь решить эту проблему ??
наконец-то я хочу указать данные пользователя c Я много пробовал с большим количеством поворотов, но иногда это update одна и та же запись 2 раза, иногда ничего не обновляется. Я не знаю, что я могу сделать дальше.
Спасибо

1 Ответ

0 голосов
/ 06 апреля 2020

Есть две проблемы.

1, user.save() asyn c, поэтому вам нужно await вернуть, если вы хотите использовать doc.

2, вы создаете новый User вместо обновления уже существующего User.

Этот код устраняет обе проблемы:

router.post('/newTask', async function (req, res, next) {

  var data = {
    pName: req.body.pName,
    pTitle: req.body.pTitle,
    pStartTime: req.body.pStartTime,
    pEndTime: req.body.pEndTime,
    pSessionTime: req.body.pSessionTime
  }

  try {
    const user = await User.findById(req.user.id);
    user.tasks.push(data);
    const doc = await user.save();
    return res.status(200).json(doc);
  }
  catch (err) {
    return res.status(501).json(err);
  }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...