你好我正在上这门课,但我似乎无法解决我的问题,我明白了
{
"name": "MongoError",
"message": "Unknown modifier: $pushAll",
"driver": true,
"index": 0,
"code": 9,
"errmsg": "Unknown modifier: $pushAll"
}
当我尝试创建一个新用户时。我查了一下它说得太多了
{
usePushEach: true
});
我做的mongoose的架构设置,但它仍然是错误,我似乎无法修复它这里是代码
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};
答案 0 :(得分:5)
从v2.4开始,我们已弃用mongodb official documentation $pushAll
。
在最新的mongodb版本中,(3.6) $pushAll
不再存在。
使用$ push运算符代替$。
如果您想强制使用$pushAll
,请在this thread中提供解决方案
问题的真正答案是:
@SkylarLopez嗯......我会看看你的mongoDb版本 猫鼬。看看它们是否匹配,也许你有一个不合适的猫鼬 在其中使用$ pushAll的版本.save方法
答案 1 :(得分:0)
而不是
tokens: [{
access: {type: String, require: true},
token: {type: String, require: true}
}]
试试这个
tokens: {type: Array, require: true}