.aggregate (...). toArray не является функцией - PullRequest
0 голосов
/ 26 августа 2018

вот код, на котором я получаю сообщение об ошибке. Я пробовал несколько способов, но keet получил ту же ошибку. Ошибка типа: _user10.default.aggregate (...). ToArray не является функцией Я искал другие ответы, но они - mongodb, а не mongoose ex db.collection ('users'). aggregate любая помощь будет принята с благодарностью

import User from './user.model';
import socket from './../../CHATtest/web/socket.js';



getUserInfo({userId,socketId = false}){
    let queryProjection = null;
    if(socketId){
        queryProjection = {
            "socketId" : true
        }
    } else {
        queryProjection = {
            "username" : true,
            "online" : true,
            '_id': false,
            'id': '$_id'
        }
    }
    return new Promise( async (resolve, reject) => {
        try {
    //const result = await User.aggregate([{
    //await User.aggregate([{
    User.aggregate([{
    //DB.collection('users').aggregate([{
                $match:  {
                    _id : userId
                }
            },{
                $project : queryProjection
            }
  ]).toArray( (err, result) => {
                if( err ){
                    reject(err);
                }
                socketId ? resolve(result[0]['socketId']) : resolve(result);
            });
        } catch (error) {
            reject(error);
        }
    });
},

1 Ответ

0 голосов
/ 26 августа 2018

Согласно документации Mongoose, вызов Model.aggregate () возвращает объект Aggregate (https://mongoosejs.com/docs/api.html#model_Model.aggregate).). У него нет метода toArray (), поэтому вы получаете сообщение об ошибке.

Объект Aggregate является цепочечным, и вам нужно завершить цепочку вызовом exec (). Это вернет обещание (https://mongoosejs.com/docs/api.html#aggregate_Aggregate)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...