我正在尝试使用模板文字进行查询,如下所示:
router.post('/login', middleware.isLoggedOut, function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
else
{
console.log(req.body);
var y=0;
User.findOne({'username': req.body.username, `privileges.${y}.region`: req.body.regiuni}, function(err, usr)
{
if(err)
{
console.log(err);
}
else
{
if(usr === null)
{
console.log("no usr");
}
else
{
req.logIn(usr, function(err)
{
if(err)
{
console.log(err);
}
return res.redirect('/users/' + user.username);
})
}
}
})
}
})(req, res, next);
});
我真的无法在“ privileges.${y}.region
”中使用模板文字,因为现在它不起作用。我在节点外壳中收到“意外的模板字符串”,但是vs代码似乎也无法按我的意愿解释它,因为它像模板文字一样为代码上色:
: req.body.regiuni}, function(err, usr)
{
if(err)
{
console.log(err);
}
else
{
if(usr === null)
{
console.log("no usr");
}
else
{
req.logIn(usr, function(err)
{
if(err)
{
console.log(err);
}
return res.redirect('/users/' + user.username);
})
}
}
})
}
})(req, res, next);
});
module.exports = router;
答案 0 :(得分:2)
您需要将其放在方括号内,例如
[`privileges.${y}.region`]: req.body.regiuni
这是一个对象,请考虑您访问它的方式。
你会
obj.`privileges.${y}.region`?
不,您需要使用方括号
obj.[`privileges.${y}.region`]