从节点使用 Firebase 实时数据库
Using Firebase Realtime Database from Node
任何时候我 运行 来自 Node 的 Firebase 实时数据库代码,使用 Admin SDK,进程挂起。例如,我可能有一个节点应用程序 deactivate.js
:
const admin = require("firebase-admin");
// initialize app code...
admin.database().ref(`users/${userId}/active`).set(false)
我 运行 和 node deactivate.js
。用户将被设置为非活动状态,这样很好。但随后节点进程将挂起。我必须按 ctrl-c 才能返回提示。
我是否应该使用 Firebase 在 Node 应用程序中关闭连接或执行其他操作?使用 Firebase Functions,我必须 return 从上述调用中生成的承诺。那么,Firebase Functions 是否会自动处理关闭我现在需要手动处理的任何内容?
您处理 Cloud Functions 的方式与您处理独立节点进程的方式完全不同。在必须完成的独立节点进程中使用 Admin SDK 访问实时数据库时,执行类似以下操作以确保进程在所有工作完成后退出:
admin.database().ref(`users/${userId}/active`).set(false)
.then(() => {
process.exit(0)
})
.catch((err) => {
console.error(err)
process.exit(1)
})
任何时候我 运行 来自 Node 的 Firebase 实时数据库代码,使用 Admin SDK,进程挂起。例如,我可能有一个节点应用程序 deactivate.js
:
const admin = require("firebase-admin");
// initialize app code...
admin.database().ref(`users/${userId}/active`).set(false)
我 运行 和 node deactivate.js
。用户将被设置为非活动状态,这样很好。但随后节点进程将挂起。我必须按 ctrl-c 才能返回提示。
我是否应该使用 Firebase 在 Node 应用程序中关闭连接或执行其他操作?使用 Firebase Functions,我必须 return 从上述调用中生成的承诺。那么,Firebase Functions 是否会自动处理关闭我现在需要手动处理的任何内容?
您处理 Cloud Functions 的方式与您处理独立节点进程的方式完全不同。在必须完成的独立节点进程中使用 Admin SDK 访问实时数据库时,执行类似以下操作以确保进程在所有工作完成后退出:
admin.database().ref(`users/${userId}/active`).set(false)
.then(() => {
process.exit(0)
})
.catch((err) => {
console.error(err)
process.exit(1)
})