Javascript Firebase日志表示函数返回了未定义的预期承诺或值;
这是返回错误的函数。我不擅长javascript,我尝试过修补返回,但似乎没有任何效果Javascript Firebase日志表示函数返回了未定义的预期承诺或值;,javascript,firebase,google-cloud-firestore,google-cloud-functions,firebase-admin,Javascript,Firebase,Google Cloud Firestore,Google Cloud Functions,Firebase Admin,这是返回错误的函数。我不擅长javascript,我尝试过修补返回,但似乎没有任何效果 exports.updateUser = functions.firestore .document('school/counts') .onUpdate((change, context) => { const newValue = change.after.data(); const admin_notices = newValue.admin_notices; if (
exports.updateUser = functions.firestore
.document('school/counts')
.onUpdate((change, context) => {
const newValue = change.after.data();
const admin_notices = newValue.admin_notices;
if (admin_notices === 14){
admin.firestore().collection('notifications').orderBy("date",'desc').limit(1).get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
return doc.ref.delete();
});
return;
})
.catch((error) => {
return;
});
}
});
(编辑)以防意图不明确。如果通知数超过14,我只想删除最后一个通知。它可能会进入一个
返回代码>零件。如果将此函数的结果赋给变量,则该变量将未定义(因为您不返回任何内容),而且forEach
中的返回似乎不正确。我只想删除最后一个文档。我应该将返回放在哪里?您需要返回一个承诺,该承诺只有在所有异步工作完成后才能解析。您在这个函数中执行了很多操作,但是忽略了由get()
启动的承诺链。另外,return doc.ref.delete()
实际上对您的情况没有帮助,因为您只是从内部函数而不是外部函数返回承诺。您肯定需要了解如何有效地使用JavaScript承诺,以便为云函数编写代码。如果没有云函数本身增加的复杂性,学习这一点可能会更容易代码>零件。如果将此函数的结果赋给变量,则该变量将未定义(因为您不返回任何内容),而且forEach
中的返回似乎不正确。我只想删除最后一个文档。我应该将返回放在哪里?您需要返回一个承诺,该承诺只有在所有异步工作完成后才能解析。您在这个函数中执行了很多操作,但是忽略了由get()
启动的承诺链。另外,return doc.ref.delete()
实际上对您的情况没有帮助,因为您只是从内部函数而不是外部函数返回承诺。您肯定需要了解如何有效地使用JavaScript承诺,以便为云函数编写代码。如果没有云函数本身增加的复杂性,学习这一点可能会更容易。