【发布时间】:2018-12-01 00:00:24
【问题描述】:
我想在我的项目中使用 Firestore DB 触发器,但它似乎不起作用。我使用 Express.js 作为路由器,函数是用 TypeScript 编写的。
./apiRouter.ts
import { test } from './controllers/test'
export let apiRouter = express.Router()
apiRouter.route('/test').post(test)
我创建了一个 test() 函数,它可以正确地在“城市”Firestore 集合中创建一个新的城市文档:
./controllers/test
import { adminApp } from '../adminApp'
export const test = async (request, response) => {
try {
const res = await adminApp.firestore().collection('cities')
.doc('LA')
.set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
response.status(200).send(res)
}
catch (e) {
// ...
}
}
然后我初始化 FB 管理应用程序并像这样编写“citiesOnCreate”触发器:
./adminApp.ts
import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
...
export const adminApp = admin.initializeApp({
credential: admin.credential.cert(serviceAccountKeyCasted),
databaseURL: databaseUrl
})
export const citiesOnCreate = functions.firestore
.document('cities/{cityId}')
.onCreate((change, context) => {
console.log('citiesOnCreate: ', change, context)
});
因此,当我将一些数据发布到该“/test”API 端点时,它会在 Firestore 中创建新文档,但我无法让触发器运行。
编辑:我的 ./index.ts 看起来像这样:
import * as functions from 'firebase-functions'
import { apiRouter } from './apiRouter'
export { citiesOnCreate } from './adminApp'
export const api = functions.https.onRequest(apiRouter)
【问题讨论】:
标签: typescript firebase express google-cloud-firestore google-cloud-functions