我正在尝试使用mongoose编写用于执行基本排序和更新的节点程序。我能够获得排序部分,但是当我尝试更新结果时,doc似乎没有更新,甚至调用了回调。 这是我的代码
mongoose = require('mongoose');
db_connection= mongoose.createConnection('mongodb://localhost/weather');
var schema = mongoose.Schema;
var any=new schema({});
var ary=db_connection.model('data',any,'data');
var promise=ary.find({}).distinct('State').exec();
promise.then(function(docs){
for (var i=0; i<docs.length; i++){
ary.find({State:docs[i]},{},{sort:{State:-1, Temperature:-1}}).limit(1).exec(function(err, doc){
ary.findByIdAndUpdate({_id:doc[0]._id},{$set:{month_high:'true'}}).exec(function(err, data){
console.log(data +" updated sucessfully" );
console.log(doc[0]._id);//output id
console.log((doc[0].State));//output undefined
});
});
}
});
以下是数据库doc的样子(来自Mongo university M101JS HW2-2)
{_id:54b751970d79037642e96a47,Day:11,Time:1150,State: &#39; California&#39;,Airport:&#39; LAX&#39;,温度:81,湿度:32,
&#39;风速&#39;:5,&#39; Wind Direction&#39;:50,&#39; Station Pressure&#39;:29.63, &#39;海平面压力&#39;:151,__ v:0} {_id:54b751970d79037642e96884, 日:23,时间:1654,州:&#39;佛蒙特州,机场:&#39; BTV&#39;,
温度:57,湿度:78,&#39;风速&#39;:13,&#39;风 方向&#39;:170,&#39;站压力&#39;:29.1,&#39;海平面压力&#39;: 982,__ v:0} {_id:54b751970d79037642e96ce4,Day:8,Time: 1453,State:&#39; Florida&#39;,Airport:&#39; ORL&#39;,温度:83,
湿度:55,&#39;风速&#39;:5,&#39;风向&#39;:190,&#39;站 压力&#39;:29.97,&#39;海平面压力&#39;:195,__ v:0} {_id: 54b751970d79037642e9700d,日:11,时间:1453,州:&#39;新 墨西哥&#39;,机场:&#39; SAF&#39;,温度:57,湿度:32,&#39;风 速度&#39;:11,&#39; Wind Direction&#39;:340,&#39; Station Pressure&#39;:23.87,
&#39;海平面压力&#39;:174,__ v:0}
为了让事情变得更有趣,当我尝试使用最后两行调试代码时,一个输出按预期而第二个没有。有人可以向我解释我做错了什么或错过了吗?谢谢