Javascript 带有字符串输入的If语句

Javascript 带有字符串输入的If语句,javascript,node.js,Javascript,Node.js,我想用字符串输入生成一个if语句 我有一个MongoDB和成就数据。此数据包含一个字符串,该字符串具有获得成就所必须满足的条件 我想使用条件(字符串格式)作为if语句中的条件 我有以下代码: function checker(condition, achievementId, doc) { if((condition) && doc.Achievement.indexOf(achievementId) == -1) { return true } else {

我想用字符串输入生成一个if语句

我有一个MongoDB和成就数据。此数据包含一个字符串,该字符串具有获得成就所必须满足的条件

我想使用条件(字符串格式)作为if语句中的条件

我有以下代码:

function checker(condition, achievementId, doc) {
  if((condition) && doc.Achievement.indexOf(achievementId) == -1) {
    return true 
} else {
    return false 
}
单据是将获得解锁成就的数据对象

确保成就尚未解锁

doc.Achievement.indexOf(achievementId) == -1
if语句中的示例条件:

var condition = "doc.Score == 100"

Javascript将允许此代码,但将始终返回true。可以让JS将字符串作为if语句读取吗?

实现这一点的唯一选择是使用
eval()
,它基本上做到了它所说的。它计算一个代码字符串

if(eval(condition) && doc.Achievement.indexOf(achievementId) == -1) {
}

当其他一切都失败时,JavaScript执行应该是最后的手段。很可能还有其他东西可以用来解决你的问题。请显示一些示例数据和所需结果以澄清您的问题。该条件只能在受密码保护的网站上输入,只有管理员才能进入此网站。我的用例接受管理员注入SQL的风险(他们已经可以访问MongoDB)。jAndy给出的答案现在已经足够了。你应该在问题中添加你实际正在做的事情,而不仅仅是接受JavaScript解决方案。但如果您不能接受这一事实,那么稍后当您询问为什么应用程序的性能如此糟糕时,我将与您会面。高代表核心!=回答正确。我真的希望
eval()
不是唯一的出路。甚至看起来都不是这样,因为可能还有其他可怕的JavaScript执行选项可用,而不像
eval()
那么可怕。让我们希望OP能提供一个用例和例子来真正解决他们的问题。@NeilLunn好吧,可能有“其他选项”,但正如OP提出的问题一样,在这个特定的例子中,
eval()
是正确的选择。不。这是特定于JavaScript的,不回答“MongoDB”问题。还有其他选择,毫无疑问。然而,我回答了一个问题:他如何用Javascript计算表示条件的字符串代码。我不觉得有必要分析整个应用程序并提供其他解决方案。没有关系。