MongoDB嵌套查询只返回最近发生的结果
MongoDB Nested Query Returns Only Last Occuring Result
好的,这段代码包含一个嵌套查询在for循环中
var query = records.find({$or:[{starter:data},{receiver:data}]},{});//check the records table for all persons the logged in user has spoken to
query.sort('-createDate').exec(function (err, docs){
if(err) throw err;
for(var i=docs.length-1; i>= 0; i--)
{
var starter = docs[i].starter;
var receiver = docs[i].receiver;
var lasttxt = docs[i].lastMessage;
if (starter == socket.usernames){
var target = receiver;
}else
{
var target = starter;
}
usersrec.find({username:target},{}).lean().exec(function (errx, docx){
if(errx) throw errx;
docx[0].message = lasttxt;
socket.emit('usernames', docx);
});
}
})
它意味着获取当前登录用户与之交谈的每个人的最后一条消息,并将其存储在lasttxt
变量中。问题是它只获取数据库中最后一个用户的最后一条消息然后,它将最后一条消息分配给每个人,作为他们自己的最后一条消息。
这不会影响数据库的记录。只是客户端我错过了什么?
为了导航js异步,我用socket做了一些来回发射。IO和它工作
服务器端
var query = records.find({$or:[{starter:data},{receiver:data}]},{});//check the records table for all persons the logged in user has spoken to
query.sort('-createDate').exec(function (err, docs){
if(err) throw err;
for(var i=docs.length-1; i>= 0; i--)
{
var starter = docs[i].starter;
var receiver = docs[i].receiver;
var lasttxt = docs[i].lastMessage;
if (starter == socket.usernames){
var target = receiver;
}else
{
var target = starter;
}
var userlast = target+" "+lasttxt;
socket.emit('lastly', userlast);//Emit the username and last message for the client to emit back here
}
})
在客户端,拾取发出的数据
socket.on('lastly', function(data){//Recieve the data and send right back
socket.emit('lastly2', data);
});
回到你的服务器端,接收发送回来的数据
socket.on('lastly2', function(data){//receive the username and last message to work with
var check = data;
var space = check.indexOf(' ');
var name = check.substr(0, space);
var msg = check.substr(space+1);
usersrec.find({username:name},{}).lean().exec(function (errx, docx){
if(errx) throw errx;
docx[0].message = msg;
socket.emit('usernames', docx);
});
是的,它可能是不正统的,但至少它完成了工作。
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- jQuery最近父级的数据属性选择器
- 在IE9中的输入字段中输入焦点最近按钮
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 在我的网站上显示最近提交的文章/图片
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- MongoDB嵌套查询只返回最近发生的结果
- 只显示最近请求的ajax结果
- 半径/最近的结果-谷歌地图API