在云函数上使用firestore SDK获取错误:无法对类型

时间:2018-02-01 12:36:56

标签: node.js firebase google-cloud-functions google-cloud-firestore

我想创建一个函数,在验证触发器上将数据添加到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)

askfirebase

1 个答案:

答案 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
});