首页 > 解决方案 > 使用 qs 库解析查询字符串未正确解析嵌套对象

问题描述

我正在使用qs库向节点快速服务器发送查询字符串。服务器解析结果不是我所期望的。嵌套$regex未正确解析。我需要提供哪些选项才能获得所需的结果?

const query = {location: { $regex: '^F', $options: 'i' }};
const queryString = qs.stringify(query, { encode: false });

发送到服务器的字符串化查询:“location[$regex]=^F&location[$options]=i”

const query =  qs.parse(queryString);

解析查询结果:{"location":{"$regex":"^Flocation[$options]=i"}}

预期查询结果:{"location": { "$regex": "^F", "$options": "i" }}

标签: node.jsmongodbexpressmongoose

解决方案


问题在于发送的查询字符串。当我使用 Object.values() 在服务器端修复该问题时,它被错误地作为数组发送,它没有保留“&”字符。修复此处描述的问题解决了这个问题。


推荐阅读