MongoDB。如何在node.js中执行存储的功能?

时间:2018-11-15 08:09:28

标签: javascript node.js mongodb

如何从mongodb执行存储的函数。我找到了db.eval()的解决方案,但它适合我。

例如,我有这样的文档:

{
  email: 'test@gmail.com',
  mobile: +38000000,
  user: function(user) {
    return user.lastName + ' ' + user.firstName
  },
}

我可以以某种方式在node.js中执行此功能吗? 我试图获取该字段并将其传递给新的Function构造函数,但它不起作用,还尝试对其使用eval(),也没有任何反应。 也许还有另一种方法?任何建议将不胜感激

1 个答案:

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

让我知道这是否对您有用!