node.js - 使用 NODEJS 保存在 Mongodb 后如何获得响应
问题描述
通过保存来自邮递员的数据,我想从 MongoDB 获得响应,包括新创建的文档
代码
async save(req, res){
const {score, multiplier, level} = req.body;
const scores = new Result({score, multiplier, level});
const savedRes = await scores.save().then(resp=>{
return resp
.sendStatus(200)
.send({
message:'new record is saved',
data: savedRes
})
}).catch(error=>res.sendStatus(500).send(error))
}
蒙戈配置
const app = express()
mongoose.connect(process.env.MONGODB_URL,{
useNewUrlParser: true,
useUnifiedTopology: true,
})
const con= mongoose.connection
try{
con.on('open',() => console.log('db connected'))
} catch(error){
console.log(error)
}
app.use(cors({origin:"*"}))
实际结果
- 文档是在 MongoDB Atlas 中创建的,
internal server error
在postman
响应正文中以及(node:96318) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
在 vscode 终端中
预期结果
{
message: 'new record is saved',
data: {
level: 1,
multiplier:8
}
}
解决方案
不要同时使用res.sendStatus
和res.send
。您可以使用res.status(200).json({sample : "sample"})
指定响应状态代码和响应正文。
async save(req, res){
const {score, multiplier, level} = req.body;
const scores = new Result({score, multiplier, level});
try{
const savedRes = await scores.save();
res.status(200).json({ message:'new record is saved', data: savedRes });
}catch(err){
res.status(500).json({
Message:"Internal Server Error",
Info: err
})
}
}
推荐阅读
- android - “你没有安全的键盘锁!” 在 moto g6 模拟器 API 28 上启动安全室演示时
- oracle - ORA-01843:不是有效月份 ORA-06512:在第 5 行和 ORA-01861:文字与格式字符串不匹配 ORA-06512:在第 5 行
- inno-setup - 尝试使用 regasm.exe 静默注册 dll
- php - 从 sku 获取产品对象并在 WooCommerce 中更新价格
- c# - 当有太多数据进入时,Windows 窗体 UI 冻结并且无法执行用户操作
- reactjs - React Router - 如果登录,如何重定向用户?
- amazon-web-services - 单次使用/访问预签名 url 以查看 S3 对象
- python - 仅将熊猫数据框中的新行附加到数据库中的表的有效方法
- php - 循环遍历具有特殊条件的数组
- asp.net-mvc - 为什么 CSV Helper 使用 ASP.Net MVC 只读取第一行?