我有一组产品变体,即同一产品的不同版本。有一个单独的产品集合。变体文档有一个product_id字段,该字段保存产品集合中相应产品文档的ObjectId。它的类型是ObjectId。在该字段上的所有搜索都返回0条记录。如果将类型更改为String,则可以成功搜索。
处理这些搜索的服务使用feathersjs。我认为构建查询羽毛的正确方法是:
const params = {
'params': {
'query': {
'product_id': ObjectId(productId)
}
}
};
当我这样做时,参数会像这样到达服务器:
{
query: {
product_id: {
id: '\\îĦ ;ÌúgÄ'
}
}
}
这就是我在客户端console.log记录值时所看到的,因此我确信传输正常工作。
就像我说的那样,如果将值的数据类型更改为字符串,则可以通过执行以下操作获得期望的搜索结果:
const params = {
'params': {
'query': {
'product_id': productId
}
}
};
我被困在这里,不知道还能尝试什么。我确信这是可能的,因为我可以毫无问题地查询_id
字段。任何帮助将不胜感激。
答案 0 :(得分:2)
转换为内部类型应在服务器上进行。这可以在钩子similar to the one from this issue中完成:
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;
}
}