【问题标题】:Data is not stored in mongoDB database - node.js数据未存储在 mongoDB 数据库中 - node.js
【发布时间】:2021-08-09 23:26:52
【问题描述】:

我编写node.js代码并尝试通过Postman(post)将数据插入mongodb数据库但数据没有保存,只有_id和_v插入到自动输入的文档中。我认为问题出在正文解析器中,它已被弃用,但我尝试了一些选项,但它仍然被弃用。 (我不确定bodyparser的问题)。数据是通过邮递员(post)插入的。这是相关的node.js代码:

const express = require ('express');
const mongoose = require ('mongoose');
const router = require ('./routes/api');
const bodyParser = require("body-parser");
const dotenv = require('dotenv');
dotenv.config();
const app = express();
.
.
.
app.use(bodyParser.json());//this bodyParser is deprecated
app.use('/',router);

型号:

const mongoose = require ('mongoose');
const userSchema = mongoose.Schema({
    name:{
        type:String, 
        require
    },
    password:{
        type:String,
        minlength:8,
        require
    }
})
module.exports = mongoose.model('User', userSchema);

控制器:

const User = require ('../models/User');
const newUser = async (req,res)=>{
    let user1 = new User(
        req.body);
        console.log(`${user1} added`);
        try{
            await user1.save();
            res.status(200).json({newUser:user1});
        }
        catch(error){
            res.send(`cant save new user: ${error.message}`)
        }        
}
module.exports = { newUser }

这是我在 Postman 中写的:

{
    "name":"james",
    "password":"12345678"
}

这是回应:

{
    "newUser": {
        "_id": "60a68f815019f31cfc098572",
        "__v": 0
    }
}

我很乐意得到帮助!

【问题讨论】:

  • 您能添加您的数据库代码吗?另外我认为它与bodyParser没有任何关系。由于已弃用,您可以改用app.use(express.json())
  • 这是“用户”的架构:const mongoose = require ('mongoose'); const userSchema = mongoose.Schema({ name:{ type:String, require }, password:{ type:String, minlength:8, require } }) module.exports = mongoose.model('User', userSchema);跨度>
  • 请在问题本身中添加这些型号和控制器代码。
  • 是的,我明白了,但是您必须在将记录保存在数据库中的位置向我们展示完整的代码。而且你从cmets中删除后没有在问题中添加控制器代码?
  • 现在可以了!!!谢谢,谢谢!!!!

标签: node.js mongodb express visual-studio-code


【解决方案1】:

请进行以下更改以获得所需的结果。

// In place of app.use(bodyParser.json()), use
app.use(express.json())
// Controller
const userSchema = require("../models/User");
const newUser = async (req, res) => {
  let user1 = new userSchema({
    name: req.body.name,
    password: req.body.password,
  });
  console.log(`${user1} added`);
  try {
    await user1.save().then(() => res.status(201).json({ newUser: user1 }));
  } catch (error) {
    res.send(`cant save new user: ${error.message}`);
  }
};
module.exports = { newUser };

另外,在用户架构中,请将require 更改为required: true

// Model
const userSchema = new mongoose.Schema({
    name:{
        type: String, 
        required: true
    },
    password:{
        type: String,
        minLength:8,
        required: true
    }
})

【讨论】:

    【解决方案2】:

    修改您的model.js 文件。它将检查 req.body 中是否缺少任何内容

    const mongoose = require ('mongoose');
    const userSchema = mongoose.Schema({
        name:{
            type:String, 
            required: true
        },
        password:{
            type:String,
            minlength:8,
            required: true
        }
    })
    module.exports = mongoose.model('User', userSchema);
    

    【讨论】:

      猜你喜欢
      • 2016-03-31
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      相关资源
      最近更新 更多