node.js - Mongoose/Mongodb 查询不适用于 TypeScript 对象
问题描述
我将 Node.js 与 mongoose 与 Typescript 一起使用。并且基于这样的查询这样的SO线程也应该适用于我的函数:
let conditions = {};
conditions['belongsToRestaurant'] = dto.restId;
conditions['belongsToRestaurant']
await Order.findOne({conditions}).then((doc) => {
console.log('doc');
console.log(doc);
})
控制台始终记录“restId”的正确值,并始终为“doc”记录 null。
我已经尝试了我能想到的每一个变化。我使用构造函数创建了一个对象,创建了一个具有 set 属性的对象,尝试使用类没有任何效果。我尝试使用猫鼬类型,例如:
conditions['consumerName'] = new mongoose.Schema.Types.String("asasd");
conditions['belongsToRestaurant'] = mongoose.Types.ObjectId(dto.restId);
到目前为止没有任何效果。感谢您提前阅读和帮助!
- 旁注:请记住,我引用的这些字段不在数组中,也不在子文档或任何类似性质的东西中。当我不使用对象进行更新时,工作完全正常。
解决方案
将条件对象包装在对象中只是一个小错误。
从函数中删除环绕花括号findOne
将解决问题。
const conditions = {};
conditions.belongsToRestaurant = dto.restId;
await Order.findOne(conditions)
.then((doc) => {
console.log('doc');
console.log(doc);
});
推荐阅读
- reactjs - React/Material-UI:如何将 FloatingActionButton 附加到 AppBar?
- excel - VBA 宏或函数可以通过 Windows 命令调用或执行吗?
- arrays - 检测数组中重复值的最快方法?(VBA)
- vhdl - 如何使输入数据大小可变的 CRC 生成器函数
- datetime - Dart / Flutter 默认日期格式
- java - SpringBoot 和 Jigsaw 自动配置
- javascript - 使用条件语句在 Javascript 中的不同 for 循环之间进行选择
- rust - 在 Rust 的元组中匹配 BTreeSet 的类型
- json - 允许枚举在 Avro 模式中为空
- java - 如何将 jdbc 连接器连接到 MySql 数据库服务器?