gpt4 book ai didi

node.js - 如何使用 MongoDB(Mongoose) 在集合中添加/更新 ObjectId 数组?

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

这就是我想要的最终结果。我不知道如何更新索引数组。

enter image description here

我的架构是使用 Mongoose 构建的

var postSchema  = new Schema({
title: {type:String},
content: {type:String},
user:{type:Schema.ObjectId},
commentId:[{type:Schema.ObjectId, ref:'Comment'}],
created:{type:Date, default:Date.now}
});


var commentSchema = new Schema({
content: {type:String},
user: {type:Schema.ObjectId},
post: {type:Schema.ObjectId, ref:'Post'}
created:{type:Date, default:Date.now}
});

我的 Controller 是:

// api/posts/
exports.postPosts = function(req,res){
var post = new Post({
title: req.body.title,
content: req.body.content,
user: req.user._id
});
post.save(function(err){
if(err){res.send(err);}
res.json({status:'done'});
});
};


// api/posts/:postId/comments
exports.postComment = function(req,res){
var comment = new Comment({
content: req.body.content,
post: req.params.postId,
user: req.user._id
});
comment.save(function(err){
if(err){res.send(err);}
res.json({status:'done'});
});
};

我需要使用中间件吗?或者我需要在 Controller 中做些什么吗?

最佳答案

您想要的是在 Mongoose ( see documentation ) 中称为 “人口”,它基本上是通过使用其他模型的 ObjectId 存储对其他模型的引用来工作的。

当你有一个 Post 实例和一个 Comment 实例时,你可以像这样“连接”它们:

var post    = new Post(...);
var comment = new Comment(...);

// Add comment to the list of comments belonging to the post.
post.commentIds.push(comment); // I would rename this to `comments`
post.save(...);

// Reference the post in the comment.
comment.post = post;
comment.save(...);

你的 Controller 看起来像这样:

exports.postComment = function(req,res) {
// XXX: this all assumes that `postId` is a valid id.
var comment = new Comment({
content : req.body.content,
post : req.params.postId,
user : req.user._id
});
comment.save(function(err, comment) {
if (err) return res.send(err);
Post.findById(req.params.postId, function(err, post) {
if (err) return res.send(err);
post.commentIds.push(comment);
post.save(function(err) {
if (err) return res.send(err);
res.json({ status : 'done' });
});
});
});
};

关于node.js - 如何使用 MongoDB(Mongoose) 在集合中添加/更新 ObjectId 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398899/

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