Я пишу код node.js и пытаюсь вставить данные в базу данных mongodb с помощью Postman (post), но данные не сохраняются, в документы вставляются только _id и _v, которые вводятся автоматически. Я думаю, что проблема в парсере тела, он устарел, но я попробовал несколько вариантов, и он остался устаревшим. (Я не уверен, что проблема с bodyparser). Данные были вставлены через Postman (сообщение). Это соответствующий код 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
}
}
Буду очень рад получить помощь !!
2 ответа
Пожалуйста, внесите следующие изменения, чтобы получить желаемый результат.
// 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);
Похожие вопросы
Новые вопросы
node.js
Node.js - это неблокирующая асинхронная среда ввода-вывода, основанная на событиях, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на клиенте, так и на стороне сервера, и, следовательно, выигрывают от повторного использования кода и отсутствия переключения контекста.