是否有無法檢查firebase-admin nodejs腳本中的所有firebase事務是否已完成,並正確斷開與firebase的連接並退出nodejs腳本?如何在所有事務完成後正確退出firebase-admin nodejs腳本
目前,firebase-admin nodejs腳本將在所有事務完成後繼續運行。
是否有無法檢查firebase-admin nodejs腳本中的所有firebase事務是否已完成,並正確斷開與firebase的連接並退出nodejs腳本?如何在所有事務完成後正確退出firebase-admin nodejs腳本
目前,firebase-admin nodejs腳本將在所有事務完成後繼續運行。
DatabaseReference.transaction()
方法返回在交易完成時履行的承諾。您可以使用Promise.all()
方法等待任何數量的這些交易承諾完成,然後致電process.exit()
來結束程序。
這是一個完整的例子:
var admin = require("firebase-admin");
// Initialize the SDK
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
// Create two transactions
var addRef = admin.database().ref("add");
var addPromise = addRef.transaction(function(current) {
return (current || 0) + 1;
});
var subtractRef = admin.database().ref("subtract");
var subtractPromise = subtractRef.transaction(function(current) {
return (current || 0) - 1;
});
// Wait for all transactions to complete and then exit
return Promise.all([addPromise, subtractPromise])
.then(function() {
console.log("Transaction promises completed! Exiting...");
process.exit(0);
})
.catch(function(error) {
console.log("Transactions failed:", error);
process.exit(1);
});
如果你跟蹤所有的承諾,他們成功完成,正在發生的事情是,應用程序是保持連接打開,您可以終止該應用,使用:
app.delete()
例如,如果你使用的是默認應用程序,你可以這樣做:
firebase.app().delete()