Используя метод Put с Express я получаю код 200, но ничего не обновляется - PullRequest
0 голосов
/ 29 мая 2018

Привет, ребята. Я только что попытался создать свою функцию обновления, и с помощью Почтальона я хочу обновить поле firstName.результат в консоли HTTP / 1.1 "200, но ничего не обновлено.

Это результат в теле почтальона

{
    "user_id": "5adaa55c0364d01cd9478492",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1YWRhYTU1YzAzNjRkMDFjZDk0Nzg0OTIiLCJpYX4OTJ9.JpDShf4iBFBCQ5rGflKbsj3jisl-PS68UOTnVpxNyXs",
    "data": {
        "userData": [
            {
                "address": [
                    {}
                ]
            }
        ]
    }
}

Это то, что я пытаюсь обновить

{
    "data": {
        "userData": [
            {
                "firstName": "George"
            }
        ]
    }
}

Вот моя функция обновления от authentication_controller.js

exports.update = function (req, res, next) {
  var email = req.body.email;
  var password = req.body.password;
  var role = req.body.role;
  var firstName = req.body.firstName;
  var lastName = req.body.lastName;
  var phone = req.body.phone;
  var number = req.body.number;
  var street = req.body.street;
  var city = req.body.city;
  var postcode = req.body.postcode;
  var user = req.user;

  user.save(function (err) {
    if (err) {
      return next(err)
    } else {
      res.json({
        user_id: user._id,
        token: tokenForUser(user),
        data: {
          email: email,
          password: password,
          userData: [{
            role: role,
            firstName: firstName,
            lastName: lastName,
            phone: phone,
            address: [{
              number: number,
              street: street,
              city: city,
              postcode: postcode
            }],
          }],
        }
      });
    }
  });
}

А вот часть от моего route.js

router.route('/users/:user_id/data')
  .get(requireAuth, AuthenticationController.index)
  .put(requireAuth, AuthenticationController.update);

1 Ответ

0 голосов
/ 29 мая 2018

Вы не звоните своей мангустовой модели.Вы вызываете пользовательский объект, который помещен на req промежуточным программным обеспечением requireAuth из декодирования JWT.

Вам необходимо вызвать / использовать вашу настоящую модель мангуста User:

const User = require('./path/to/mongoose/model/User')

...

// assuming the decoded JWT user object has an `id` property
User.findByIdAndUpdate(req.user.id, req.body)
    .exec()
    .then(doc => res.json(doc)
    .catch(err => res.json(err))

http://mongoosejs.com/docs/api.html#findbyidandupdate_findByIdAndUpdate

...