如何在feathersjs中查询属于正常字段的ObjectId?

时间:2019-06-25 15:37:02

标签: mongodb feathersjs

我有一组产品变体,即同一产品的不同版本。有一个单独的产品集合。变体文档有一个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字段。任何帮助将不胜感激。

1 个答案:

答案 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;
  }
}