Cloud Functions: Mongoose aggregate search causing Error: Collection method aggregate is synchronous error
Cloud Functions: Mongoose aggregate search causing Error: Collection method aggregate is synchronous error
当我的 Flutter 应用启动时,我正在调用 Cloud Function。当我从 'flutter run' 开始时,我的函数调用 returns Error: Collection method aggregate is synchronous
.
但是,当我使用 command + r
刷新应用程序时,它 returns 是正确的值。
app.dart
var gameFunction = await functions.httpsCallable('gameS').call({
'gamingId': 'afijeoaijosf'
});
f函数索引
export const gameS = functions.https.onCall(async (data, context) => {
try {
return await gameFunctionF(data, context);
} catch (err) {
const aa = err as functions.https.HttpsError;
throw new functions.https.HttpsError(aa.code, aa.message, aa.details);
}
});
f 函数 gameFunctionF
export async function gameFunctionF(data: any, context: CallableContext) {
console.log(data);
try {
return await db
.aggregate([
{ $project: { game_profile: 1} },
])
.toArray();
} catch (err) {
console.log(`aaaa - err - ${err}`);
throw 'nooooo';
}
}
当我启动应用程序时,出现 Collection method aggregate is synchronous
错误。但是当我使用 command + r
刷新应用程序时,它会 returns 我想要的数据。没有变量被改变没有什么。 var gameFunction
在调用 app.dart 时运行。
我真的不明白为什么会这样,因为它只会在我从 flutter run
开始时导致此错误,但当我刷新应用程序时它工作正常。
我试过 android phone,当我终止应用程序后打开应用程序时也会导致错误。
正如 Mousumi 建议查看的那样,link 解决了我的问题。
const mongoConn = createConnection();
export const mongooooooo = mongoConn.openUri(
`uri`,
{
connectTimeoutMS: 30000,
}
);
这就是我从 createConnection(uri)
改变过来的方式。然后,您必须将 db 函数调整为
(await db)
.aggregate([
{ $project: { game_profile: 1} },
])
错误已解决!谢谢木炭!
更新--------
我不得不在 (await db)
前面添加 await
以获得承诺结果。
await (await db)
.aggregate([
{ $project: { game_profile: 1} },
])
当我的 Flutter 应用启动时,我正在调用 Cloud Function。当我从 'flutter run' 开始时,我的函数调用 returns Error: Collection method aggregate is synchronous
.
但是,当我使用 command + r
刷新应用程序时,它 returns 是正确的值。
app.dart
var gameFunction = await functions.httpsCallable('gameS').call({
'gamingId': 'afijeoaijosf'
});
f函数索引
export const gameS = functions.https.onCall(async (data, context) => {
try {
return await gameFunctionF(data, context);
} catch (err) {
const aa = err as functions.https.HttpsError;
throw new functions.https.HttpsError(aa.code, aa.message, aa.details);
}
});
f 函数 gameFunctionF
export async function gameFunctionF(data: any, context: CallableContext) {
console.log(data);
try {
return await db
.aggregate([
{ $project: { game_profile: 1} },
])
.toArray();
} catch (err) {
console.log(`aaaa - err - ${err}`);
throw 'nooooo';
}
}
当我启动应用程序时,出现 Collection method aggregate is synchronous
错误。但是当我使用 command + r
刷新应用程序时,它会 returns 我想要的数据。没有变量被改变没有什么。 var gameFunction
在调用 app.dart 时运行。
我真的不明白为什么会这样,因为它只会在我从 flutter run
开始时导致此错误,但当我刷新应用程序时它工作正常。
我试过 android phone,当我终止应用程序后打开应用程序时也会导致错误。
正如 Mousumi 建议查看的那样,link 解决了我的问题。
const mongoConn = createConnection();
export const mongooooooo = mongoConn.openUri(
`uri`,
{
connectTimeoutMS: 30000,
}
);
这就是我从 createConnection(uri)
改变过来的方式。然后,您必须将 db 函数调整为
(await db)
.aggregate([
{ $project: { game_profile: 1} },
])
错误已解决!谢谢木炭!
更新--------
我不得不在 (await db)
前面添加 await
以获得承诺结果。
await (await db)
.aggregate([
{ $project: { game_profile: 1} },
])