如何从mongodb执行存储的函数。我找到了db.eval()
的解决方案,但它适合我。
例如,我有这样的文档:
{
email: 'test@gmail.com',
mobile: +38000000,
user: function(user) {
return user.lastName + ' ' + user.firstName
},
}
我可以以某种方式在node.js
中执行此功能吗?
我试图获取该字段并将其传递给新的Function构造函数,但它不起作用,还尝试对其使用eval(),也没有任何反应。
也许还有另一种方法?任何建议将不胜感激
答案 0 :(得分:1)
您可以执行以下操作:
首先将函数存储为字符串。像这样:
{
email: 'test@gmail.com',
mobile: +38000000,
user: 'function(user) {return user.lastName + " " + user.firstName}' // Save it as string
}
或者如果您在某处的代码中具有此功能(命名功能不是匿名用户),则可以执行以下操作:
{
email: 'test@gmail.com',
mobile: +38000000,
user: myCoolFunction.toString() // Note here the toString call
}
然后,当您从mongo db获取此记录时,请评估用户属性,如下所示:
eval("let funcToExec = " + dbRecord.user); // Note that this restores your function back into any variable you want which you can use later in code
// Then execute your function simply like this:
funcToExec({firstName: "Michael", lastName: "Jacksonn"});
让我知道这是否对您有用!