我正在研究应用程序,并将多个查询字符串发送到服务器,并基于该查询字符串参数,我将动态创建一个mongodb查询对象作为字符串,然后当我获得完整的字符串格式查询时将其传递给find方法,并根据该查询从数据库中检索结果。 让我们看一下演示代码:
// 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();
但是使用此实现,查询参数实际上是一个字符串,而不是实际的查询对象。如何将其转换为实际对象?我做了很多研究,但找不到任何解决方案。
如何解决此问题?帮助将不胜感激。 谢谢。
答案 0 :(得分:0)
无需将对象作为字符串传递
只需将对象存储到变量
// eg object
var user = { fullName: "Rehan Shah", PhoneNumber: "+92 315 1234567", Package: "'5df6339e5c2c9108a8d57ef0" }
然后您可以将对象直接传递给查询
let query_parameters = user;
或者您也可以根据需要方便地单独调用
let query_parameters = {
fullName: user.fullName,
PhoneNumber: user.PhoneNumber,
Package: user.Package
};
然后,您终于可以触发查询了
Model.find(query_parameters).then().catch();
如果您想在查询中添加投影
let projection = {
$sort: {
fullName: 1
}
};
Model.find(query_parameters, projection).then().catch();
答案 1 :(得分:0)
要使用JSON.parse()转换json对象
let query_parameters = "{ fullName: "Rehan Shah", PhoneNumber: "+92 315 1234567", Package: "'5df6339e5c2c9108a8d57ef0"}";
Model.find(JSON.parse(query_parameters)).then().catch();