MongoDB动态字段名查询:如何在运行时替换查询字段
解决方案
你可以利用JavaScript的计算属性名特性实现动态字段名查询,直接在对象字面量中用方括号包裹参数变量即可。
修改后的代码如下:
async getTrack(id, type: keyof Track): Promise<Track[]> { // 用计算属性名动态生成查询条件的键 const query = this.trackModel.find( { [type]: id }, { _id: 0 } ).limit(100); return query; }
补充说明
- 计算属性名
[type]会把变量type的实际值作为对象的键名,完全满足你“运行时替换字段名”的需求。 - 如果你用TypeScript,建议把
type的类型约束为keyof Track,这样能在编译阶段校验传入的字段名是否属于Track类型的合法属性,避免无效查询。 - 若不需要TypeScript的类型校验,保留
type: string也可正常运行,只是缺少类型安全保障。
内容的提问来源于stack exchange,提问作者Bogdan Bruma
相关产品推荐
相关产品推荐

