使用函数和 Firestore 时未定义字段值
Posted
技术标签:
【中文标题】使用函数和 Firestore 时未定义字段值【英文标题】:FieldValue undefined when using functions and 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 都可以确认或否认这种情况吗?我很乐意提交错误报告。
【问题讨论】:
【参考方案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 的答案有何不同! 它是一样的,但不知何故,实现对我不起作用!以上是关于使用函数和 Firestore 时未定义字段值的主要内容,如果未能解决你的问题,请参考以下文章
FirebaseError:使用无效数据调用函数 Query.where()。不支持的字段值:在进行 Karma 测试时未定义
ExtJs,提交表单时未调用自定义TextField的getValue()函数
由子文档或集合完成创建时未触发firestore OnCreate