gpt4 book ai didi

node.js - Mongoose 删除附加到 User 的数组中的特定注释

转载 作者:行者123 更新时间:2023-12-03 15:59:59 29 4
gpt4 key购买 nike

--NodeJS、Mongoose、MongoDB、ExpressJS、EJS--

我的网站是,有一个登录用户,他们可以在其中提交他们想要的“名称”和“图像”,然后作者和其他人可以对该图片发表评论。在每个图像上,我添加了一个函数,使用 .length 函数计算评论数,该函数计算图片上的评论数,并将评论数投影到我的 ejs 文件中。

这是我的架构:

var testSchema = new mongoose.Schema({
name: String,
image: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "Loginuser"
},
username: String
},
comments: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Comment"
}
]
});

var commentSchema = new mongoose.Schema ({
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "Loginuser"
},
username: String
},
text: String,
date: String
});

var loginSchema = new mongoose.Schema ({
username: String,
password: String
});


var TestData = mongoose.model("User", testSchema);
var Comment = mongoose.model("Comment", commentSchema);
var LoginUser = mongoose.model("Loginuser", loginSchema);

我有一个删除用户评论的功能,

app.delete("/index/:id/comments/:comment_id", function(req, res){
Comment.findByIdAndRemove(req.params.comment_id, function(err){
if(err) {
console.log(err);
res.redirect("/index/");
} else {
console.log("Comment successfully deleted!");
res.redirect("back");
}
});
});

这是我的 mongoDB 中的一些示例数据评论架构

{ "_id" : ObjectId("57d316e506d8e9186c168a49"), 
"text" : "hey baby! why cry?", "
__v" : 0,
"author" : { "id" : ObjectId("57d148acd0f11325b0dcd3e6"),
"username" :
"nagy" },
"date" : "9/10/2016 , 8:07 AM" }

{ "_id" : ObjectId("57d316f706d8e9186c168a4a"),
"text" : "don't you cry baby!",
"__v" : 0,
"author" : { "id" : ObjectId("57d095d727e6b619383a39d0"),
"username": "doge" },
"date" : "9/10/2016 , 8:07 AM" }

{ "_id" : ObjectId("57d3170306d8e9186c168a4b"),
"text" : "wow so cute!!!!!!", "_
_v" : 0,
"author" : { "id" : ObjectId("57d095d727e6b619383a39d0"),
"username" : "doge" }, "date" : "9/10/2016 , 8:07 AM" }

这是我关于testSchema的数据

{ "_id" : ObjectId("57d316c506d8e9186c168a47"), 
"name" : "Baby crying",
"image": "https://s-media-cache-ak0.pinimg.com/564x/d0/bb/ed/d0bbed614353534df9a3be0abe
5f1d78.jpg",
"comments" : [ ObjectId("57d316e506d8e9186c168a49"), ObjectId("57d3
16f706d8e9186c168a4a") ], "author" : { "id" : ObjectId("57d095d727e6b619383a39d0
"), "username" : "doge" }, "__v" : 2 }

{ "_id" : ObjectId("57d316dc06d8e9186c168a48"),
"name" : "Maria?! OZawa?!",
"image" : "https://dncache-mauganscorp.netdna-ssl.com/thumbseg/1092/1092126-bigthumb
nail.jpg",
"comments" : [ ObjectId("57d3170306d8e9186c168a4b") ], "author" : { "
id" : ObjectId("57d148acd0f11325b0dcd3e6"), "username" : "nagy" }, "__v" : 1 }

工作正常,正在删除评论。这里的问题是,它仅在“评论”模型上删除。

我想在“TestData”模型上删除相同的评论,因为每次我删除评论时,评论的数量保持不变。

所以基本上我想删除对这两个模型的特定评论。

我尝试使用这种方法:

app.delete("/index/:id/comments/:comment_id", function(req, res){
TestData.findByIdAndRemove(req.params.comment_id)function(err){
if(err) {
console.log(err);
res.redirect("/index");
} else {
res.redirect("back");
}
});
});

但它不起作用。

您能帮我确定我应该使用什么具体查询吗?

最佳答案

尝试以下代码:-

  TestData.update(
{},
{$pull: {comments: req.params.comment_id}},
{ multi: true },
function(err, data){
console.log(err, data);
});

希望这对您有帮助。

关于node.js - Mongoose 删除附加到 User 的数组中的特定注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39410971/

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