Когда я пытаюсь сохранить запись пользователя в БД в узле, сохраняется только идентификатор - PullRequest
2 голосов
/ 24 апреля 2020

У меня проблема с сохранением данных пользователя в MongoDB; Функция save сохраняет только идентификатор пользователя, а также, когда я регистрирую пользователя перед попыткой сохранить его, я тоже получаю только идентификатор. Когда я регистрирую req.body, я получаю все данные.

Я предполагаю, что проблема где-то в экземпляре userSchema.

const userSchema = require('../models/user.model');
var User = mongoose.model('user', userSchema);

Вот мой код:

module.exports.register = (req, res, next) => {
var user = new User(req.body);
user.name = req.body.name;
user.email = req.body.email;
user.username = req.body.username;
user.password = req.body.password;

user.save((err, doc) => {
    if (!err) {
        res.send(doc);
    }
    else {
        console.log(err);
        if (err.code == 11000) {
            res.status(422).send(['Duplicate email adrress found.']);
        }
        else
            return next(err);
    }
  });
}

Вот мой console.log (req.body)

    {
      name: 'name',
      email: 'mail@mail',
      username: 'username123',
      password: '12345'
    }

А это console.log ('document' + do c)

document: { _id: 5ea3237a48b41b3cc08bfe1f, __v: 0 }

1 Ответ

1 голос
/ 24 апреля 2020

Проблема, о которой вы упомянули в вопросе, связана с импортом модели использования

Можете ли вы добавить это в конце файла модели (user.model): module.exports = User = mongoose.model("User", userSchema); и импортировать в контроллер как const User = require("../models/user.model");.

Просто хочу обратить внимание на два разных поведения журнала консоли с помощью "," и "+". Пожалуйста, проверь это. И я не думаю, что вам нужны следующие 4 строки:

user.name = req.body.name;
user.email = req.body.email;
user.username = req.body.username;
user.password = req.body.password;

let user = {"_id":"a", "name":"ABCD"};
  
console.log("doc"+ user)

console.log("doc", user)
...