【发布时间】:2019-12-18 23:08:20
【问题描述】:
我正在编写一个 Firebase 数据库触发器函数来向多个用户推送通知。为了保持一致性,我想批处理所有写入操作,但我无法创建批处理。
如何从数据快照中获取对数据库的引用?
const functions = require('firebase-functions')
const admin = require('firebase-admin')
exports.onNoteCreate = functions
.region('europe-west1')
.database
.ref('/notes/{noteId}')
.onCreate((snapshot, context) => {
//Get a reference to the database - this does not work!
const db = snapshot.getRef()
...
const notificationObject = {"test": true}
//Run database batched operation - prepare batch
let batch = db.batch()
peopleToAlert.forEach((personId, index) => {
//Write notification to all affected people
const notificationId = db.ref().push()
const batchWrite = db.collection(`/notifications/${personId}/notes`).doc(notificationId)
batch.set(batchWrite, notificationObject)
})
//Commit database batch operation
return batch.commit().then(() => {
return new Promise( (resolve, reject) => (resolve()))
}).catch( (err) => {
return new Promise( (resolve, reject) => (reject(err)))
})
})
下面的方法我也试过了,没用
const db = admin.database()
非常感谢任何澄清!亲切的问候/K
【问题讨论】:
标签: javascript firebase firebase-realtime-database google-cloud-firestore google-cloud-functions