【问题标题】:When I try to save user record to db in node, only id is saved当我尝试将用户记录保存到节点中的数据库时,只保存了 id
【发布时间】:2020-08-08 08:26:36
【问题描述】:

我在将用户数据保存到 MongoDB 时遇到问题;保存功能只保存用户的 id,而且当我在尝试保存之前登录用户时,我也只得到 id。 当我登录 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' + doc)

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

【问题讨论】:

  • 你能显示你的用户架构吗
  • 当然,这里是: const userSchema = new Schema({ name: { type: String, required: [true, 'This field can\'t be empty'] }, email: { type : String, required: [true, 'This field can\'t be empty'] }, username: { type: String, required: [true, 'This field can\'t be empty'] }, password: { type : String, required: [true, '该字段不能为空'] }, saltSecret: String });
  • 请看答案。

标签: node.js mongodb saving-data


【解决方案1】:

您在问题中提到的问题是使用模型导入

您能否在 (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)

【讨论】:

  • 无论有没有这 4 行,当我登录用户时,我得到的只是:{ _id: 5ea32b754c939026ec997f64 }
  • 你能用MongoDB Compass之类的工具检查数据库中的实际文档吗?
  • 只有id保存到数据库中
  • 你能在(user.model)模型文件的末尾添加这个吗:=> module.exports = User = mongoose.model("User", userSchema);并在控制器中导入为 const User = require("../models/user.model");
猜你喜欢
  • 2021-03-14
  • 2021-11-29
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多