【发布时间】:2020-09-13 13:42:05
【问题描述】:
我在 MongoDB 中有一个集合,我可以在 Express 中使用 get 来检索数据。但是当从客户端发出更新请求时它可以工作,但是 mongooseInstance.save().then((err, settings) ... 承诺将有效负载作为错误变量返回。
代码如下:
const SettingsSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
main_email: String,
bio: String,
gitHub_url: String,
linkedin_url: String,
bio_intro: String,
bio_tagline: String,
bio_pic: String
}),
SettingsModel = mongoose.model('profile_settings', SettingsSchema, 'profile_settings');
app.get('/profileSettings', (req, res) => {
SettingsModel.find((err, settings) => {
if (err) {
res.status(500).send(err);
} else {
res.json(settings);
}
});
});
app.put('/profileSettings', (req, res) => {
SettingsModel.findById("5ec40c318f3ebfe68a400e6f", (err, settings) => {
if (err) {
res.status(500).send(err);
}
if (settings) {
settings.main_email = req.body.main_email;
settings.bio_intro = req.body.bio_intro;
settings.bio_tagline = req.body.bio_tagline;
settings.bio_pic = req.body.bio_pic;
settings.bio = req.body.bio;
settings.linkedin_url = req.body.linkedin_url;
settings.gitHub_url = req.body.gitHub_url;
settings.save().then((err, settings) => {
console.log('err: ', err);
console.log('settings: ', settings);
if (err) {
res.status(500).send(err);
//res.json(err);
} else {
res.json(settings);
}
});
} else {
res.status(404).send('Settings Failed to Update');
}
});
});
所以 get 按预期工作,而 put 实际上更新了 mongo db 中的所有值。但是在保存方法中,错误和设置都是相同的。 当此代码运行时,它会向客户端发送 500 错误,即使后端一切正常。
console.log('err: ', err);
console.log('settings: ', settings);
if (err) {
res.status(500).send(err);
//res.json(err);
} else {
res.json(settings);
}
});
如果我将res.json(err) 放在if(err){} 中,那么它返回的结果与res.json(settings) 相同,并且我得到一个 200 状态,但这并不能让我正确处理错误。
提前致谢。这是我正在使用的版本
节点:10.15.1
快递:4.16.1
猫鼬:5.9.14
mongoDB Atlas 服务
【问题讨论】: