gpt4 book ai didi

javascript - Mongoose 找到所有然后标记匹配用户 ID 的文档

转载 作者:行者123 更新时间:2023-11-30 14:44:56 24 4
gpt4 key购买 nike

Post 说,找到所有记录的最佳方法是什么,然后只用一些标志标记属于已登录用户的帖子(假设一个帖子可以属于许多用户)。理想情况下,我希望这发生在服务器上,这样如果我有 100 篇使用 Post.find({}) 的帖子,我可以获得如下所示的 Mongoose 文档或 JSON 对象:

[{title: "some Post", userPost: true}, {title: "another post}, {title: "third post", userPost: true}, {title: "Last post"}]

在这个结果中,我可以用特定的方式装饰用户帖子。但是,我想查询所有帖子,但只是用户帖子,因为这不是通过模板引擎进行的,所以我需要在 JSON 响应中存在标志以指示与当前用户的关系。

目前,我有一个如下所示的函数:

let currentUser;
Post.find().exec( ( error, posts ) => {
posts.map( ( p ) => {
let userPosted = currentUser.posts.some((userPost) => {
return userPost.equals(p._id)
});
return Object.assign(p.toObject(), {userPost: userPosted});
} );
} );

有什么改进建议吗?这个过滤函数应该在 Post 模型上使用吗?在初始查询中是否有更有效的方法来执行此操作?我知道 Mongoose 中的 lean() 将返回 JSON 而不是 Mongoose 文档,因此我不需要进行该转换。我对想法持开放态度。

最佳答案

我假设是这样的:

    //first you need something associating the current user
const currentUser = ?;
const alteredPosts = [];
//get all posts from Mongo
Post.find({})
.exec(error, posts => {
if(error) console.error(error);
//search through all posts and find those by the current user
alteredPosts = posts.map( ( p ) => {
if(p._id === currentUser._id) {
p.currentUser = currentUser.id
}
return p;
});
})
});

关于javascript - Mongoose 找到所有然后标记匹配用户 ID 的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49090854/

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