这是我遇到错误的代码。 我尝试了多种方法,但保持同样的错误。 TypeError:_user10.default.aggregate(...)。toArray不是函数 我搜索了其他答案,但它们不是mongodb,不是mongoose 前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);
}
});
},
答案 0 :(得分:0)
根据Mongoose文档,调用Model.aggregate()会返回一个Aggregate对象(https://mongoosejs.com/docs/api.html#model_Model.aggregate)。它没有toArray()方法,这就是为什么出现错误的原因。
Aggregate对象是可链接的,您需要以对exec()的调用结束该链。那将返回一个承诺(https://mongoosejs.com/docs/api.html#aggregate_Aggregate)