我编写了一个非常简单的Cloud Function,使用来自FirebaseAuth中新创建的FirebaseUser的一些信息在Firestore中添加一些字段。
在Firestore中,我有一个名为“ highscore”的集合。每次创建一个新用户时,我都想添加一个文档,其中将firebaseusers uid作为文档,并添加2个字段,例如:
highscore / uid / score和highscore / uid / usernick(例如highscore / fgt38gudg9 / 430和highscore / fgt38gudg9 / cooldude45)
这是我的功能:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.database()
//On user creation, trigger: Add information to /highscore/uid
exports.onUserCreation = functions.auth.user().onCreate((user) => {
const collection = db.collection("highscore")
const userid = user.uid
const usernick = user.displayName
collection.doc(userid).set({
score: 0
user: usernick
})
})
但是,当函数被触发时,我遇到了这个错误:
TypeError: db.collection is not a function
at exports.onUserCreation.functions.auth.user.onCreate (/srv/index.js:11:24)
at cloudFunctionNewSignature (/srv/node_modules/firebase-functions/lib/cloud-functions.js:120:23)
at /worker/worker.js:825:24
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)
我不知道这一点。有什么建议吗?
答案 0 :(得分:2)
我认为您正在使用Firstore:
ko-KR
答案 1 :(得分:2)
admin.database()
为您提供了对项目的实时数据库实例的引用。您要使用的是admin.firestore()
。
此外,您将希望返回从set()
获得的承诺,否则,该操作可能不会在函数终止之前完成。
return collection.doc(userid).set({
score: 0
user: usernick
})
请务必read the documentation about terminating functions来理解您处理诺言所代表的异步工作的义务。