猫鼬nodejs“未知修饰符:$ pushAll”

4 mongoose mongodb node.js

您好,我正在上这门课程,但是我似乎无法解决我的问题,{ "name": "MongoError", "message": "Unknown modifier: $pushAll", "driver": true, "index": 0, "code": 9, "errmsg": "Unknown modifier: $pushAll" } 当我尝试结交新用户时会遇到问题 。我查了一下,它说也增加 { usePushEach: true }); 了我所做的猫鼬的模式设置,但它仍然出错,我似乎无法修复它,这里是代码

const mongoose = require("mongoose");
const validator = require("validator");
const jwt = require("jsonwebtoken");

var UserSchema = new mongoose.Schema({

  email: {
    require: true,
    type: String,
    minlength: 1,
    trim: true,
    unique: true,
    validate: {
      validator: validator.isEmail,
      message: `{VALUE} is not a valid email`
    }
  },
  password: {
    type: String,
    require: true,
    minlength: 6
  },
  tokens: [{
    access: {type: String, require: true},
    token: {type: String, require: true}
  }]
},{
  usePushEach: true
});

UserSchema.methods.generateAuthToken = function() {
  var user = this;
  var access = "auth";
  var token = jwt.sign({_id: user._id.toHexString(), access}, "abc123").toString();
  // user = user.concat({access, token})
  // console.log(user)
  user.tokens.push({access, token})

  return user.save().then(() => {
      return token
  })
};

var User = mongoose.model("User",  UserSchema);


module.exports = {User};
Run Code Online (Sandbox Code Playgroud)

Gré*_*EUT 6

纵观MongoDB的官方文档 $pushAll,因为V2.4已被弃用。

最新的mongodb版本(3.6) $pushAll已经不存在。

请将$ push运算符与$ each一起使用。


如果您要强制使用$pushAll,则在此线程中给出解决方案

在此处输入图片说明


问题的真正答案是:

@SkylarLopez嗯...我会看你的mongoDb和mongoose版本。看看它们是否匹配,也许您有一个不适当的猫鼬版本,在其中使用$ pushAll .save方法

  • 您说得对,我需要更新我的软件包,谢谢! (2认同)