У меня есть коллекция в MongoDB, и я могу использовать Express для получения данных. Но когда вы делаете запрос на обновление от клиента, он работает, но 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 фактически обновляет все значения в mon go db. Но внутри метода save ошибка и настройки одинаковы. Когда этот код запускается он отправляет клиенту ошибку 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 status, но это не позволяет мне правильно обрабатывать ошибки.
Заранее спасибо. Вот версии, которые я использую
node: 10.15.1
express: 4.16.1
пн goose: 5.9.14
mongoDB Atlas Service