gpt4 book ai didi

javascript - mongodb 错误 Mongoose 不推数组 $pushAll 中的对象

转载 作者:可可西里 更新时间:2023-11-01 09:21:18 37 4
gpt4 key购买 nike

我有一个带有 User 和 Post 模型的简单应用,

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/assoc", {useMongoClient:true});
mongoose.Promise = global.Promise;

//Post
var postSchema = new mongoose.Schema({
title: String,
content: String
});
var Post = mongoose.model("Post", postSchema);

//User
var userSchema = new mongoose.Schema({
email: String,
name: String,
posts: [postSchema]
});

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

我之前创建了一个用户(名称:“gino”)并将帖子推送到:

// var newUser = new User({
// email: "a.b@c.it",
// name: "gino"
// });
//
// newUser.posts.push({
// title: "gino's post",
// content: "this is content"
// });
//
// newUser.save(function (err, user) {
// if (err) {
// console.log(err);
// } else {
// console.log(user);
// }
// });

同时创建另一个帖子来检查 Post 模型是否有效:

// var newPost = new Post({
// title: "honky",
// content: "tonky"
// });
//
// newPost.save(function (err, post) {
// if (err) {
// console.log(err);
// } else {
// console.log(post);
// }
// });

当我尝试查找“gino”并将新项目推送到帖子数组时,尝试使用以下代码段保存用户 (user.save) 时出错:

User.findOne({name: "gino"}, function (err, user) {
if (err) {
console.log(err);
} else {
console.log(user);
user.posts.push({
title: "post",
content: "content"
});
user.save(function (err, user) {
if (err) {
console.log(err);
} else {
console.log(user);
}
});
}
});

当我运行应用程序时,我得到了这个:

{ MongoError: Unknown modifier: $pushAll
at Function.MongoError.create (appFolder\node_modules\mongodb-core\lib\error.js:31:11)
at toError (appFolder\node_modules\mongodb\lib\utils.js:139:22)
at appFolder\node_modules\mongodb\lib\collection.js:1059:67
at appFolder\node_modules\mongodb-core\lib\connection\pool.js:469:18
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
name: 'MongoError',
message: 'Unknown modifier: $pushAll',
driver: true,
index: 0,
code: 9,
errmsg: 'Unknown modifier: $pushAll' }

有人可以帮助我吗?

最佳答案

请尝试使用 findOneAndUpdate

User.findOneAndUpdate(
{ name: "gino" },
{ $push: { posts: { title: 'post', content: 'content' } } },
{ new: true },
function (err, user) {
if(err) console.log("Something wrong when updating data");
console.log(user);
});

希望对您有所帮助!

关于javascript - mongodb 错误 Mongoose 不推数组 $pushAll 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48159522/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com