当前位置: 首页 > 知识库问答 >
问题:

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

束雅达
2023-03-14

我想创建一个函数,将在身份验证触发器上添加数据到FIREST。

nodejs prettyprint-override">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值。函数处的encodeValue(/user\u code/node\u modules/firebase admin/node\u modules/@google cloud/firestore/src/document.js:775:11)。在函数处编码字段(/user\u code/node\u modules/firebase admin/node\u modules/@google cloud/firestore/src/document.js:646:36)。WriteBatch上的fromObject(/user\u code/node\u modules/firebase admin/node\u modules/@google cloud/firestore/src/document.js:202:55)。在DocumentReference中设置(/user\u code/node\u modules/firebase admin/node\u modules/@google cloud/firestore/src/write batch.js:272:39)。在导出时设置(/user\u code/node\u modules/firebase admin/node\u modules/@google cloud/firestore/src/reference.js:425:8)。addUserData。功能。auth。使用者一次创建。对象上的事件(/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 at_uuwaiter(/user_code/node_modules/firebase functions/lib/cloud functions.js:24:12)

共有1个答案

胡国兴
2023-03-14

错误消息表示您正在传递的一个值是定义。给定您的代码,uid不太可能是未定义的,因此可能的原因是显示名称。

用户配置文件不需要有显示名称,因此代码应该处理没有显示名称的情况。

const user = event.data;
const userUid = user.uid;
const userName = user.displayName ? '';
return db.collection('peoples').doc(userUid).set({
    name: userName,
    uid: userUid
});
 类似资料:
  • 在React应用程序中使用Firestore,我正在测试使用Google云函数获取一个文档字段,然后使用该字段在Firestore中创建一个新字段。前几天我让它工作了,现在不行了。 这是我在谷歌云功能日志中得到的错误: 错误:无法解码文件快照中FiresteValue:{"stringValue":"sox"}的类型。_decodeValue 下面是我使用的代码。它与此处的代码非常相似:https

  • 我是js/handlebars的新手,我无法用VS代码显示来自我的home.hbs文件的图像。当我运行服务器时,我得到的是: 这是我的服务器代码: 我的“home.hbs”代码: get“错误特别声明 无法获取/public/img/logo.png 这是我所有的信息,任何帮助将非常感谢。

  • 我收到错误: 错误类型错误: 无法读取在评估 (webpack-internal:///./node_modules/@angular/common/esm5/http.js:163) 处未定义的属性 “长度”在 Array.forEach () 在 httpHeaders.lazyInit (webpack-internal:///./node_modules/@angular/common/e

  • 问题内容: 这是我的代码。我在ArraryAdapter上收到错误消息。 如何用数组填充? 这是我的XML: 问题答案: 片段不是上下文对象。您需要将Activity对象(Fragment.getActivity())作为第一个参数传递。

  • 我有osgi项目。每个包都是一个单独的maven项目。项目足够大,包括大约10个包。一切正常,一切正常。 在org.apache.maven.plugin.abstractCompilerMojo.execute(abstractCompilerMojo.java:656)在org.apache.maven.plugin.compilerMojo.execute(compilerMojo.java

  • 我正在尝试将本机SQL结果映射到我的POJO。下面是配置。我在用Spring。 这是我的课 这里我是怎么称呼它的 但说到线