javascript - 尝试在 MongoDB 中使用 updateOne(),但它没有更新文档或给我一个错误?
问题描述
我正在尝试将从计算器获得的值添加到数据库中的用户文档中,但是它没有显示任何错误或更新文档,页面只是永远加载,我不知道为什么。下面是我要更新的代码:
router.post('/tdeecalculator', function(req, res){
User.updateOne({email: "testtesttest@test.com"}, {$set: {tdeenumber: req.body.tdee}})
});
以下是我的用户架构:
const UserSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
tdeenumber: {
type: Number,
required: false
},
ormnumber: {
type: Number,
required: false
}
})
const User = mongoose.model('User', UserSchema);
module.exports = User;
MongoDB 中的文档显示如下:
_id: 60c217c26c83903ee454c2c5
name: "testtesttest"
email: "testtesttest@test.com"
password: "$2a$10$zQ4Jk3KKCjjNTyY0Z48/X.JkPO0J5lfV6j4gqTR1sLmqxKqvSq8mW"
__v: 0
可能是因为实际文档中没有显示 tdeenumber 吗?任何帮助将非常感激
解决方案
您应该async/await
在 db 查询之前使用过,您也没有返回对您收到的呼叫的响应。
像这样转换您的控制器并正确查看错误。
// Used async before the function to use await before the db query
router.post('/tdeecalculator', async (req, res) => {
//Wrapped your operation with try/catch block to catch error message and show it in console and response
try {
await User.updateOne({ email: "testtesttest@test.com" }, { $set: { tdeenumber: req.body.tdee } })
res.send({ success: 1 });
return;
} catch (error) {
console.log(error.message);
res.send({
success: 0,
error: error.message
});
}
});
推荐阅读
- image - 使用 InceptionV3 处理灰度图像
- linux - 使用 awk 显示模式存在多少行
- c++ - 如何在 C++ 中覆盖模板类的 >> 运算符?
- c++ - 智能指针的概念
- python - sqlite数据库flask中一张表使用2个外键的问题
- intellij-idea - IntelliJ 警告关于 JSON 数组上带有 int 的“getAt”
- c - macOS:PQconnectdb 失败,并显示“ld: symbol(s) not found for architecture x86_64”
- react-native - “Expo 开发人员工具已与 Expo CLI 断开连接。” 尝试运行本机项目时
- yaml - 如果我添加没有双引号的环境变量,kubectl 编辑将不起作用
- flutter - [FLUTTER]:我可以在 iOS 和 Android 的 Flutter App 中分别设置多少个通知?