我正在研究应用程序,并将多个查询字符串发送到服务器,并基于该查询字符串参数,我将动态创建一个mongodb查询对象作为字符串,然后在以字符串格式获取完整查询时,我希望将其传递查找方法,并根据该查询从数据库中检索结果。让我们看一下演示代码:
// This would be the query that will be generated dynamically.
{ fullName: "Rehan Shah", PhoneNumber: "+92 315 1234567", Package: "'5df6339e5c2c9108a8d57ef0"}
// Would be stored in the variable.
let query_parameters = "{ fullName: "Rehan Shah", PhoneNumber: "+92 315 1234567", Package: "'5df6339e5c2c9108a8d57ef0"}";
现在,我想将查询参数传递给find方法。
Model.find(query_parameters).then().catch();
但是使用此实现,查询参数实际上是一个字符串,而不是实际的查询对象。如何将其转换为实际对象?我进行了很多研究,但找不到任何解决方案。
如何解决这个问题?帮助将不胜感激。谢谢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在JavaScript中,你可以使用JSON.parse()
方法将一个JSON格式的字符串转换为JavaScript对象。这正是你当前情况下的解决方案。你的查询参数是一个看起来像JSON格式的字符串,所以你可以这样转换它:
let query_string = "{ fullName: \"Rehan Shah\", PhoneNumber: \" 92 315 1234567\", Package: \"'5df6339e5c2c9108a8d57ef0\"}";
// 注意:原始字符串中的单引号需要修正以符合JSON格式要求,MongoDB的ObjectId应该用双引号包围
// 将字符串转换为有效的JSON格式(修正单引号问题)
query_string = query_string.replace(/'/g, '"');
// 然后解析为JavaScript对象
let query_parameters = JSON.parse(query_string);
// 现在可以安全地使用这个对象作为查询参数
Model.find(query_parameters)
.then(result => {
// 处理查询结果
console.log(result);
})
.catch(error => {
// 处理错误
console.error('Error executing query', error);
});
请注意,我在示例中首先修正了字符串中的单引号问题,因为MongoDB的ObjectId和字符串值都应被双引号包围,这是标准的JSON格式要求。然后,通过JSON.parse()
将其转换为实际的JavaScript对象,就可以直接用于MongoDB查询了。
确保在实际应用中对用户输入进行适当的验证和清理,以防止注入攻击等安全风险。