无论如何检查是否在 firebase-admin nodejs 脚本中完成了所有 firebase 事务,并正确断开与 firebase 的连接并退出 nodejs 脚本?
目前,即使所有事务都已完成,firebase-admin nodejs 脚本仍将继续运行。
无论如何检查是否在 firebase-admin nodejs 脚本中完成了所有 firebase 事务,并正确断开与 firebase 的连接并退出 nodejs 脚本?
目前,即使所有事务都已完成,firebase-admin nodejs 脚本仍将继续运行。
如果您正在跟踪所有承诺并且它们成功完成,那么正在发生的事情是应用程序保持连接打开,您可以使用以下方法终止应用程序:
app.delete()
例如,如果您使用默认应用程序,您可以这样做:
firebase.app().delete()
该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);
});