我想创建一个函数,在验证触发器上将数据添加到firestore。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
exports.addUserData = functions.auth.user().onCreate(event => {
const user = event.data;
const userUid = user.uid;
return db.collection('peoples').doc(userUid).set({
name:user.displayName,
uid:user.uid
});
});
但它给出了错误
错误:无法将类型([对象未定义])编码为Firestore值 在Function.encodeValue(/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:775:11) 在Function.encodeFields(/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:646:36) 在Function.fromObject(/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/document.js:202:55) 在WriteBatch.set(/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/write-batch.js:272:39) 在DocumentReference.set(/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/src/reference.js:425:8) at exports.addUserData.functions.auth.user.onCreate.event(/user_code/index.js:9:46) 在对象。 (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27) 在下一个(本地) at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71 在__awaiter(/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
答案 0 :(得分:2)
错误消息显示您传入的其中一个值为undefined
。鉴于您的代码,uid
不太可能是undefined
,因此显示名称可能是原因。
用户配置文件不需要具有显示名称,因此您的代码应该处理不显示的情况。
const user = event.data;
const userUid = user.uid;
const userName = user.displayName ? '';
return db.collection('peoples').doc(userUid).set({
name: userName,
uid: userUid
});