Node.js TypeError:无法使用';在';操作员搜索'_id';男性

Node.js TypeError:无法使用';在';操作员搜索'_id';男性,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,您好,我在使用node.js的新版本时遇到了问题 早些时候,我使用了这样的代码 label(for='user_sex') Sex: select(id='user_sex', name='user[sex]') option(id='user_male',value=user.sex,selected=1)='male' option(id='user_female',value=user.sex)='female' 和app.js中的代码 var user = new U

您好,我在使用node.js的新版本时遇到了问题 早些时候,我使用了这样的代码

 label(for='user_sex') Sex:
 select(id='user_sex', name='user[sex]')
   option(id='user_male',value=user.sex,selected=1)='male'
   option(id='user_female',value=user.sex)='female'
和app.js中的代码

 var user = new User(req.body.user);
 -- other code
 var sex = new User(req.body.user.sex);
 User.find({}, function(err, users) {
 for(var i = 0;i< users.length;i++) {
    if(users[i].email == email) {
       useremail = users[i].email;
    }
 }
 if(!useremail) {
    user.save(function(err) {
      if (err) return userSaveFailed();
      req.flash('info', 'Your account has been created');
      emails.sendWelcome(user);

      switch (req.params.format) {
        case 'json':
          res.send(user.toObject());
        break;

        default:
          req.session.user_id = user.id;
          res.redirect('/userinfo');
      }
    });
 }

这个问题似乎与连接形式,我知道是不赞成现在,所以我现在使用强大的。有人能帮我解决这个错误吗

您之所以会遇到这个错误,是因为您没有正确构建模型实例。它需要属性及其对应值的散列,但您提供的参数是字符串。 从上面的代码中,req.body.user是一个散列
{sex:“male”}
,而req.body.user.sex只是一个字符串“male”。你能做到

user = new User({sex: "male"});
但你做不到

user = new User("male");
这解释了为什么您的第一个带有req.body.User参数的“User”实例可以工作,但使用req.body.User.sex参数失败。
我还不确定您使用
var sex=new User(req.body.User.sex)想要实现什么是否要创建另一个用户模型实例?或者一个相关的性模型?

在节点中找到所有用户,然后在其中循环,寻找正确的电子邮件,这有点奇怪。为什么不
User.find({email:email},//…
?至于实际的错误,我看不出你在你发布的代码中使用了in操作符。我得到了error@var sex=new User(req.body.User.sex);即使我没有使用其余的代码,这也是我关心的问题。var“sex”是一个将存储“值”的字符串我并没有创建任何新的模型,而是将从表单中收集的性别值分配到变量sex中,我以后可能会在代码中使用该变量。
user = new User("male");