Couchdb检索两个用户之间的聊天历史记录



我目前正在使用Couchdb来保存两个用户之间的聊天历史。我的数据库包含每个用户输入的每个插入的消息。它们是这样输入的:

{
_id: (timestamp),
from: sender,
to: receiver,
message: msg
}

我有一个代码如下的视图:

function(doc) {
if (doc.from && doc.to){
(doc._id, doc);
}
}

我很难想出一个主意,根据我目前的设置检索两个用户之间的聊天转换。

我在视图功能中采用了以下方式:

res.forEach(function (row) {
if(row.from != null || row.to != null){
if((row.from == socket.username && row.to == receiver) || (row.from == receiver && row.to == socket.username)){
MsgHistoryContent += row.message + 'n';
}
}
});

然而,这并没有检索到两个用户之间的所有对话,因为它检索到了每个用户的所有消息。

有人能给我线索吗?如有任何帮助,我们将不胜感激。

附言:我用的是node.js和cradle。

您可以创建这样的映射函数:

function(doc) {
var key = [doc.from, doc.to].sort(function (a, b) {
return a.localeCompare(b);
});
emit(key.concat(doc._id), doc);
}

然后,您将能够通过查询"?startkey=["user1","user2"]&endkey=["user1","user2",{}]'。当然,起始键和结束键0和1索引都应该按字母表排序。

相关内容

  • 没有找到相关文章

最新更新