mongodb - 如何在正常字段的feathersjs中查询ObjectIds?
问题描述
我有一系列产品变体,即同一产品的不同版本。有一个单独的产品集合。变体文档有一个product_id字段,里面保存了产品集合中对应产品文档的ObjectId;它的类型是 ObjectId。此字段的所有搜索都返回 0 条记录。如果我将类型更改为字符串,我可以成功搜索。
处理这些搜索的服务使用了 feathersjs。我认为构建羽毛查询的正确方法是:
const params = {
'params': {
'query': {
'product_id': ObjectId(productId)
}
}
};
当我这样做时,参数会像这样到达服务器:
{
query: {
product_id: {
id: '\\îĦ ;ÌúgÄ'
}
}
}
如果我在客户端控制台记录值,这就是我看到的,所以我确信传输工作正常。
就像我说的,如果我将值的数据类型更改为字符串,我可以通过执行以下操作获得我期望的搜索结果:
const params = {
'params': {
'query': {
'product_id': productId
}
}
};
我在这里很困惑,不知道还有什么可以尝试的。我确信这是可能的,因为我可以毫无问题地查询_id
字段。任何帮助,将不胜感激。
解决方案
转换为内部类型应该发生在服务器上。这可以在类似于此问题的钩子中完成:
const { ObjectID } = require('mongodb');
module.exports = function() {
return async context => {
const { query = {} } = context.params;
if(query. product_id) {
query.product_id = new ObjectID(query._id);
}
return context;
}
}
推荐阅读
- python - Selenium 无法通过 id 定位元素
- android - 当我将 LinearLayout 放入 ConstraintLayout 时不显示
- android - 是否可以查看哪个 bazel 目标传播 -lpthread 标志?
- javascript - 尝试将图像上传到 Firebase 存储时出错
- r - 改进 R 中的绘图
- c++ - 在 VSCode 和 Mingw 上编译 C++ Helloworld.cpp
- r - 重新排列两列,使相似的元素在一列中
- jquery - 防止 jQueryUI 可排序项目在排序完成之前移动和移动
- javascript - 为什么会出现这个错误?users.map 不是函数
- wordpress - ACF - 图库字段 -> 反向查找以查找该图像在图库字段中的所有帖子