首页 > 解决方案 > 使用 mongoose.find 但每个用户一个项目

问题描述

好朋友,我正在为一个项目开发一个API,我需要从数据库中获取发送给用户或用户发送的最后一条消息。但在这些消息中,我只想为每个用户获取最多 1 条消息,以便在消息收件箱中显示最后一条消息的预览,并且在选择聊天时,将加载每个对话的所有消息。

示例(发送给 Joangel 的所有消息):

来自:Joel,至:Joangel,味精:sdffd

来自:Joel,至:Joangel,味精:234235

来自:Joel,至:Joangel,味精:551

来自:Jorge,至:Joangel,味精:ee werwe

来自:Jorge,至:Joangel,味精:sdffd55

来自:Tony,至:Joangel,味精:heeey

使用 find 时应该返回这个:

来自:Joel,至:Joangel,味精:sdffd

来自:Jorge,至:Joangel,味精:ee werwe

来自:Tony,至:Joangel,味精:heeey

如果你能帮我解决这个问题,我将不胜感激

标签: javascriptnode.jsmongodbmongoose

解决方案


如果您使用的是猫鼬,那么您应该使用 model.findOne() 方法, findOne 方法文档的链接

基本上你应该做的是创建一个猫鼬模式和模型,比如,

const userSchema = new mongoose.Schema({name: String, message: String})

您可以在架构中添加更多项目,然后创建模型,

const User = new mongoose.model("User", userSchema)

每当您想使用模型执行功能时,现在将您的用户添加到模型中,您可以查询它,在您必须使用的情况下,

User.findOne({conditions which you use to find the specific user}, function(err, foundUser){Here you can do anything with that user which you queried for from your database})

推荐阅读