所有事务完成后如何正确退出firebase-admin nodejs脚本

时间:2017-01-13 08:43:05

标签: firebase-admin

无论如何检查firebase-admin nodejs脚本中是否已完成所有firebase事务,并正确断开与firebase的连接并退出nodejs脚本?

目前,即使在所有交易完成后,firebase-admin nodejs脚本也会继续运行。

2 个答案:

答案 0 :(得分:9)

如果您正在跟踪所有承诺并且它们已成功完成,那么应用程序正在保持连接打开,您可以使用以下命令终止应用:

app.delete()

例如,如果您使用默认应用程序,则可以执行此操作:

firebase.app().delete()

答案 1 :(得分:4)

DatabaseReference.transaction()方法返回一个在事务完成时完成的promise。您可以使用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);
  });