我真的无法弄清楚出了什么问题,请帮助。
MongoDB版本2.6.7
我可以毫无问题地插入,但查找功能预制件非常有线,请参阅下面的代码。
代码A效果很好。
var mongoClient = require("mongodb").MongoClient;
var express = require("express");
var app = express();
mongoClient.connect("mongodb://localhost:27017/feeding", function(err,database){
if(!err){
db.collection('test').find({}).toArray(function(err, users){
console.log(users);
});
app.listen(8888, function(){
console.log("Server Started");
});
}else{
console.dir(err);
}
});
低于B代码会抛出'TypeError: undefined is not a function' at line 25
var mongoClient = require("mongodb").MongoClient;
var express = require("express");
var app = express();
mongoClient.connect("mongodb://localhost:27017/feeding", function(err,database){
if(!err){
var cursor = db.collection('test').find({});
while (cursor.hasNext()) { //line 25
console.log("printed");
}
app.listen(8888, function(){
console.log("Server Started");
});
}else{
console.dir(err);
}
});
我相信它说hasNext()不是一个函数,但是引用MongoDB文档http://docs.mongodb.org/manual/tutorial/iterate-a-cursor/,似乎代码没有任何问题,花了几个小时才解决这个问题。任何人都可以给我一个建议吗?
答案 0 :(得分:1)
代码B中的行应该在Mongo shell中使用,而不是在Node.js脚本中使用。为此,您需要使用Node.js MongoDB驱动程序。
检查光标对象here的文档。
您需要使用cursor.nextObject()
方法并检查返回的对象是否为null
,这表示您已到达终点。