node.js - Mongoose.create 正在添加到数据库中,但仍然出现错误
问题描述
我正在尝试为产品创建一个 RESTful API 以执行 CRUD 操作。我使用的数据库是 MongoDB,我使用 mongoose 和 express 来访问数据。当我尝试创建产品时,它会将产品添加到数据库中,并且我想将创建数据的信息发送给用户,但它从 catch 块发送数据并且显示的错误为空。
我的架构
const userSchema = new mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: {type:String, required:true},
price: {type:Number, required:true}
})
let product = mongoose.model("User",userSchema);
用于创建产品的端点
app.post("/addprod" ,(req,res) => {
let prodname = req.body.name
let price = req.body.price
product.create({
"_id" : mongoose.Types.ObjectId(),
"name" : prodname,
"price":price
})
.then(res => {
console.log(res)
res.json({
_id:res._id,
name:res.name,
price:res.price,
request:{
method:"GET",
url: "localhost:3000/prod?name=" + res.name
}
})
}
)
.catch(err => res.json({
message1:err
}))
})
控制台输出
{ _id: 5d188eb5ea237a204caba7c7,
name: 'shaurya10',
price: 3000,
__v: 0 }
我希望输出是
{
"_id":"5d188eb5ea237a204caba7c7",
"name":"shaurya10",
"price":"3000",
"request":{
"method":"GET",
"url": "localhost:3000/prod?name=shaurya10"
}
我得到的输出是
{
"message1": {}
}
我做错了什么?
解决方案
问题是您res
在外部函数和内部函数中都用作响应变量
你可以简单地做到这一点。
app.post("/addprod" ,(req,res) => {
let prodname = req.body.name
let price = req.body.price
product.create({
"_id" : mongoose.Types.ObjectId(),
"name" : prodname,
"price":price
}).then(item => {
res.send(item);
}).catch(err => {
res.send(err);
});
});
推荐阅读
- latex - 为什么我的缩写表指的是它自己的页面?
- angular - Angular:取消订阅http请求
- amazon-web-services - 处理 tdl 重定向的最佳位置在哪里?
- javascript - 如何将html表单的输入保存到json文件中?
- amazon-web-services - 在使用 Github Runner 的 Terratest 中使用 HttpGet 方法获取连接被拒绝
- nfc - Wireshark 插件编译
- excel - Excel 将字母列表拆分为单元格以生成所有组合
- javascript - JavaScript for 循环返回未定义
- model - 如何播种 Data EF Core?
- javascript - 如何在反应中从多维数组中获取特定的关键数据?