在云功能上使用 Firestore SDK 时出现错误:无法编码类型

Posted

技术标签:

【中文标题】在云功能上使用 Firestore SDK 时出现错误:无法编码类型【英文标题】:Using firestore SDK on cloud function getting error: Cannot encode type 【发布时间】:2018-07-11 18:59:25 【问题描述】:

我想创建一个在身份验证触发时将数据添加到 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
    );
);

但它给出了错误

错误:无法将类型 ([object Undefined]) 编码为 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) 在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) 在下一个(本机) 在 /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)

问火力基地

【问题讨论】:

【参考方案1】:

错误消息表明您传入的值之一是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
);

【讨论】:

以上是关于在云功能上使用 Firestore SDK 时出现错误:无法编码类型的主要内容,如果未能解决你的问题,请参考以下文章

在云功能中使用 Cloud Firestore

Node.js + APN:在本地,一切正常,但在云主机上启动时出现“端点错误:无法获取本地颁发者证书”

使用 firestore Firestore 时出现以下错误:错误:FIRESTORE (8.1.2) INTERNAL ASSERTION FAILED: Unexpected state

构建iOS时出现颤振云Firestore错误

使用 Firestore 获取数据时出现颤振错误

使用 firestore 时出现以下错误错误:FIRESTORE (8.1.2) INTERNAL ASSERTION FAILED: Unexpected state