使用 Mongoose 查询 MongoDB 中的模板文字

And*_*iel 3 javascript mongoose mongodb

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

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);
  });
Run Code Online (Sandbox Code Playgroud)

我真的不知道我应该如何在这里使用模板文字“ privileges.${y}.region”,因为现在它不起作用。我在节点 shell 中得到“意外的模板字符串”,但 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;
Run Code Online (Sandbox Code Playgroud)

点击 为什么会发生这种情况,我该如何解决?

iag*_*owp 5

你需要把它放在括号内,比如

[`privileges.${y}.region`]: req.body.regiuni
Run Code Online (Sandbox Code Playgroud)

这是一个对象,想想你访问它的方式。

你会怎么做

obj.`privileges.${y}.region`?
Run Code Online (Sandbox Code Playgroud)

不,你会使用括号

obj.[`privileges.${y}.region`]
Run Code Online (Sandbox Code Playgroud)