如何将字符串格式的猫鼬查询转换为实际查询对象?

时间:2019-12-23 09:26:40

标签: node.js mongodb mongoose

我正在研究应用程序,并将多个查询字符串发送到服务器,并基于该查询字符串参数,我将动态创建一个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();

但是使用此实现,查询参数实际上是一个字符串,而不是实际的查询对象。如何将其转换为实际对象?我做了很多研究,但找不到任何解决方案。

如何解决此问题?帮助将不胜感激。 谢谢。

2 个答案:

答案 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();