在云功能上使用 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 时出现错误:无法编码类型的主要内容,如果未能解决你的问题,请参考以下文章
Node.js + APN:在本地,一切正常,但在云主机上启动时出现“端点错误:无法获取本地颁发者证书”
使用 firestore Firestore 时出现以下错误:错误:FIRESTORE (8.1.2) INTERNAL ASSERTION FAILED: Unexpected state
使用 firestore 时出现以下错误错误:FIRESTORE (8.1.2) INTERNAL ASSERTION FAILED: Unexpected state