我是NodeJS的新手,我正在使用MongoDB进行推广。但是我的错误在我看来很奇怪:TypeError: Cannot call method 'find' of undefined.
我试图使用' find
'来自节点mongo模块的方法,collection.find({id: "1"}, callback)
,但我得到的只是那个错误。然而,奇怪的是插入确实有效。有什么问题?
db.collection('users', function(error, collection)
{
console.log('Collection:');
// ================ THIS WORKS =================
// insert :
// collection.insert({
// id: "1",
// name: "Marciano",
// email: "email@email.nl",
// }, function()
// {
// console.log('inserted!');
// });
// collection.insert({
// id: "2",
// name: "Edward Elric",
// email: "edward_elric@live.nl",
// }, function()
// {
// console.log('inserted!')
// });
// ======= THIS DOESNT WORK ========
// select:
// specify an object with a key for a 'where' clause
collection.find({'id': '1'}, function(error, cursor)
{
//cursor : iterateing over results
cursor(function(error, user)
{
console.log("found:" + user);
})
})
});
答案 0 :(得分:0)
这不是你如何迭代从Cursor返回的.find()对象。使用.each()或.toArray()方法来处理结果。
collection.find({ "id": 1 }).toArray(function(err,data) {
// data is an array of objects from the collection
});
答案 1 :(得分:0)
导致beucase你将记录插入数据库并且不等待回调。如果你想这样做,我建议你使用async和方法瀑布。 但无论如何,最好使用Mongoose而不是现在使用。 并写下这样的东西
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/collection');
var user = new User({ name: 'John' });
user.save(getInsertedUsers);
var getInsertedUsers = function(){
User.find({ name: "John" }, echoUsers); //if you want to get just users named john or
User.find({}, echoUsers);
}
var echoUsers = function(users)
{
console.log(users);
}