【问题标题】:mongoose nodejs "Unknown modifier: $pushAll"mongoose nodejs“未知修饰符:$pushAll”
【发布时间】:2018-07-24 08:08:20
【问题描述】:

您好,我正在学习这门课程,但我似乎无法解决我的问题,我明白了 { "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};

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    查看 mongodb official documentation $pushAll 自 v2.4 以来已被弃用。

    在最新的 mongodb 版本中 (3.6) $pushAll 不再存在。

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


    如果要强制使用$pushAllthis thread中给出了解决方案


    问题的真正答案是:

    @SkylarLopez 嗯...我会看看你的 mongoDb 版本和 猫鼬。看看他们是否匹配,也许你有一只不合适的猫鼬 .save 方法中使用 $pushAll 的版本

    【讨论】:

    • 我有点困惑,我的代码中没有使用 $pushAll 运算符,那么我该如何替换它
    • @SkylarLopez hm... 我会看看你的 mongoDb 和 mongoose 版本。看看它们是否匹配,也许你有一个不合适的猫鼬版本,其中使用了$pushAll .save 方法
    • 对,我在我发布的代码中有,{usePushEach: true} 之前尝试让它工作,但它仍然没有
    • 你说得对,我需要更新我的包,谢谢!
    【解决方案2】:

    代替

     tokens: [{
        access: {type: String, require: true},
        token: {type: String, require: true}
      }]
    

    试试这个

     tokens: {type: Array, require: true}
    

    【讨论】:

    • 你是怎么调用这个函数的?
    猜你喜欢
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 2018-10-31
    • 2021-11-11
    • 2011-02-01
    相关资源
    最近更新 更多