Mongoose查询MongoDB中的模板文字

时间:2018-12-12 16:37:06

标签: javascript mongodb mongoose

我正在尝试使用模板文字进行查询,如下所示:

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;

click 为什么会发生,该如何解决?

1 个答案:

答案 0 :(得分:2)

您需要将其放在方括号内,例如

[`privileges.${y}.region`]: req.body.regiuni

这是一个对象,请考虑您访问它的方式。

你会

obj.`privileges.${y}.region`?

不,您需要使用方括号

obj.[`privileges.${y}.region`]