我目前正在使用Couchdb来保存两个用户之间的聊天记录。我的数据库包含每个用户输入的每个插入的消息。他们是这样输入的:
{
_id: (timestamp),
from: sender,
to: receiver,
message: msg
}
我的视图编码如下:
function(doc) {
if (doc.from && doc.to){
(doc._id, doc);
}
}
我很难想到根据我当前的设置检索两个用户之间的聊天转换的想法。
我在view函数中按以下方式执行:
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';
}
}
});
但是它没有检索到两个用户之间的所有对话,因为它检索来自每个用户的所有消息。
任何人都可以给我带头?任何帮助将不胜感激。
P.S:我正在使用node.js和cradle。
答案 0 :(得分:0)
您可以创建这样的地图功能:
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索引都应该按字母顺序排序。