.aggregate(...).toArray 不是函数
Posted
技术标签:
【中文标题】.aggregate(...).toArray 不是函数【英文标题】:.aggregate(...).toArray is not a function 【发布时间】:2019-02-01 07:55:23 【问题描述】:这是我遇到错误的代码。 我尝试了多种方法,但总是遇到同样的错误。 TypeError: _user10.default 我搜索了其他答案,但它们是 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);
);
,
【问题讨论】:
User.aggregate 会返回游标吗? toArray 仅在游标上可用:docs.mongodb.com/manual/reference/method/cursor.toArray 我知道 .aggregate 总是返回对象,但这并不意味着您不能将它们放入数组中并在对象中返回数组。也许我不明白这个问题。我是这个的新手 可能是 ***.com/questions/39381453/…... 【参考方案1】:根据 Mongoose 文档,调用 Model.aggregate() 会返回一个 Aggregate 对象 (https://mongoosejs.com/docs/api.html#model_Model.aggregate)。它没有 toArray() 方法,这就是您收到错误的原因。
Aggregate 对象是可链接的,您需要通过调用 exec() 来结束链接。这将返回一个承诺 (https://mongoosejs.com/docs/api.html#aggregate_Aggregate)
【讨论】:
以上是关于.aggregate(...).toArray 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
将 .ToArray() 放入 from/in [重复] 时,LINQ 查询性能不佳
Laravel Eloquent toArray 不使用方括号