2015-08-24 2 views
0

Я получаю сообщение об ошибке:Неопределенная функция ошибки для cursor.toArray() с локально размещенной базы данных

«TypeError: не определено не является функцией» ..для ToArray() в коде ниже.

// Require mongo db user model 
var User = require("./models/user.js"); 

. 
. 
. 

// list of members page ==================================================== 
// protected page 
app.get("/members", isLoggedIn, function(req, res) { 

    // get array list of usernames 
    var pttCursor = User.find({ } , { firstname: 1, lastname: 1, _id: 0 }); 
    var membersArray = pttCursor.toArray(function(err, docs){}); 

    res.render("members.ejs", { 
     user : req.user, // get user out of session and pass to template 
     members : membersArray 
    }); 
}); 

Я хочу, чтобы страница/members имела доступ к массиву имен пользователей.

редактировать: Я также попытался "cursor.map()" .. Я получаю ту же ошибку

// get array list of usernames 
var pttCursor = User.find({ } , { firstname: 1, lastname: 1, _id: 0 }); 
var membersArray = pttCursor.map(function(pttDoc){ 
    return pttDoc.firstname + pttDoc.lastname; 
}); 
+0

Mongoose не поддерживает ни один из методов. Они присутствуют только в оболочке MongoDB. Ну '.Array()' существует в собственном драйвере. Но у мангуста нет таких. По умолчанию «mongoose» возвращает результат как массив уже, если вы явно не запрашиваете курсор или поток. –

+0

@blakes, могу ли я настроить его следующим образом: 'var membersArray = User.find ({}, {firstname: 1, lastname: 1, _id: 0});' ?? – Fabian

+0

I woluld предлагает прочитать [документацию] (http://mongoosejs.com/docs/api.html#model_Model.find) –

ответ

1

.find метод из модели возвращает объект Query не Cursor.

Для выполнения запроса используйте метод .exec() на pttCursor.

Также все методы async должны обрабатываться с помощью обратных вызовов.

var pttCursor = User.find({ } , { firstname: 1, lastname: 1, _id: 0 }) 
    .exec(function(err, membersArray){ 
     res.render("members.ejs", { 
      user : req.user, // get user out of session and pass to template 
      members : membersArray 
     }); 
    });