繁体   English   中英

数据未存储在 mongoDB 数据库 - node.js

[英]Data is not stored in mongoDB database - node.js

我编写了 node.js 代码并尝试通过 Postman (发布)将数据插入 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);

model:

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

controller:

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
    }
}

我很乐意得到帮助!

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

// 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
    }
})

修改您的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM