【问题标题】:FieldValue undefined when using functions and Firestore使用函数和 Firestore 时未定义字段值
【发布时间】:2018-04-15 23:01:42
【问题描述】:

我有以下功能:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const FieldValue = require('firebase-admin').FieldValue;

module.exports = functions.firestore
  .document('students/{studentId}')
  .onDelete(event => {
    const student = event.data.previous.data();
    const { id, semester } = student;
    const classId = student.class;
    const deleteObj = {};
    deleteObj[id] = FieldValue.delete(); //Line 12, this is where the error orccurs
    return admin
      .firestore()
      .collection('semesters')
      .doc(semester)
      .collection('students')
      .doc(classId)
      .update(deleteObj);
  });

每次运行时都会出现以下错误:

TypeError: Cannot read property 'delete' of undefined
    at module.exports.functions.firestore.document.onDelete.event (/user_code/deleteStudent.js:12:37)

看着docs我真的看不出我做错了什么?

// Get the `FieldValue` object
var FieldValue = require("firebase-admin").FieldValue;

// Create a document reference
var cityRef = db.collection('cities').doc('BJ');

// Remove the 'capital' field from the document
var removeCapital = cityRef.update({
    capital: FieldValue.delete()
});

更新

因此,使用网络等效项似乎可行:admin.firestore.FieldValue.delete()。但这似乎是一个错误,因为我在 nodejs 环境中?任何 Firebaser 都可以确认或否认这种情况吗?我很乐意提交错误报告。

【问题讨论】:

    标签: javascript firebase google-cloud-functions google-cloud-firestore


    【解决方案1】:

    原来是文档中的错误,正确的导入应该是const FieldValue = require('firebase-admin').firestore.FieldValue;

    更新

    应该说 Firebase 在几个小时内做出了响应,并正在尽快更正文档。

    【讨论】:

    • 我在这上面浪费了很多时间。感谢分享!
    • 天哪,我希望我能早点找到这个答案。谢谢你救了我。
    • Firestore 的文档非常糟糕。唯一记录 FieldValue 导入的地方是在 firebase.google.com/docs/firestore/manage-data/… 的完全不相关函数的示例代码中需要更好的文档!
    【解决方案2】:

    成功了!

    需要 firebase-admin

    const admin = require('firebase-admin')
    

    添加这个常量

    const fieldValue = admin.firestore.FieldValue; 
    

    现在使用

    fieldValue.delete()
    

    更多参考:otcollect.com/post

    【讨论】:

    • 只是想知道您的答案与上面@Chris 的答案有何不同!
    • 它是一样的,但不知何故,实现对我不起作用!
    猜你喜欢
    • 2020-09-16
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多