【发布时间】:2016-09-18 08:03:42
【问题描述】:
我正在尝试按日期对 Mongoose 的输出进行排序,该日期存储在子文档中。我相信这可以在客户端更轻松地完成,但我想限制对服务器资源的消耗并延迟加载子文档,而不是一次加载它们。
我正在开发私人消息功能。我定义了一个名为 Conversations 的架构,并且定义了另一个名为 messages 的架构。他们的代码如下:
const mongoose = require('mongoose');
const ChatSchema = new mongoose.Schema({
messageBody: {
type: String,
required: true
},
from: {
type: String,
required: true
}
},
{
timestamps: true // Saves createdAt and updatedAt as dates. createdAt will be our timestamp.
});
const ConversationSchema = new mongoose.Schema({
participants: [String],
messages: [ChatSchema]
});
module.exports = mongoose.model('Chat', ChatSchema);
module.exports = mongoose.model('Conversation', ConversationSchema);
消息保存得很好,信息似乎正确存储在数据库中。当我尝试使用 cursor.sort() 方法首先返回最新消息时,我的问题就出现了。查询(要遵循的代码)按预期返回一条消息,但我无法让它返回最新消息。
exports.getConversations = function(req, res, next) {
// Only return one message from each conversation to display as snippet
Conversation.find({ participants: req.user._id })
.sort('-messages.createdAt')
.slice('messages', 1).exec(function(err, conversations) {
if (err) {
res.send({ error: err });
return next(err);
} // other code...
我已经尝试了我在这篇文章中找到的所有类型的变体,但无济于事:https://stackoverflow.com/a/15081087/5956144
【问题讨论】:
标签: javascript node.js mongodb sorting mongoose