通过 ArrayUnion 更新 firestore 数据库
Update firestore database via ArrayUnion
我想通过创建 ArrayUnion 对象来更新我的 firestore 数据库。
不幸的是,我的更新方法产生了以下错误:
TypeError: ('Cannot convert to a Firestore Value', <google.cloud.firestore_v1beta1.transforms.ArrayUnion object at 0x04CDEF90>,
'Invalid type', <class 'google.cloud.firestore_v1beta1.transforms.ArrayUnion'>)
这个实现在过去对我有用,但有几天我无法让它成功。
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
from firebase_admin import db
from google.cloud.firestore_v1beta1 import ArrayUnion, ArrayRemove
class TwitFire:
def __init__(self):
# Use a service account
cred = credentials.Certificate('./credentials')
firebase_admin.initialize_app(cred)
self.client = firestore.client()
def getRef(self, collectionName, documentName):
return self.client.collection(collectionName).document(documentName)
def set(self, ref, entry):
return ref.set(entry)
def update(self, ref, entry):
return ref.update(entry)
def updateTweets(self, ref, entry):
return ref.update({u'retweets': ArrayUnion([entry])})
def create(self, ref, entry):
return ref.create(entry)
您在使用 google-cloud-firestore==0.32.1
吗?
我升级到 32.1
时遇到了同样的问题。
降级为 google-cloud-firestore==0.31.0
,问题消失了。
可能是最近版本的错误。
注意我本地没有测试,只是改了requirements.txt
编辑:
from google.cloud.firestore_v1beta1 import ArrayUnion
应该与0.31.0
一起使用
使用 0.32.0
及更高版本时,导入必须是:
from google.cloud.firestore_v1 import ArrayUnion
见this
我想通过创建 ArrayUnion 对象来更新我的 firestore 数据库。 不幸的是,我的更新方法产生了以下错误:
TypeError: ('Cannot convert to a Firestore Value', <google.cloud.firestore_v1beta1.transforms.ArrayUnion object at 0x04CDEF90>,
'Invalid type', <class 'google.cloud.firestore_v1beta1.transforms.ArrayUnion'>)
这个实现在过去对我有用,但有几天我无法让它成功。
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
from firebase_admin import db
from google.cloud.firestore_v1beta1 import ArrayUnion, ArrayRemove
class TwitFire:
def __init__(self):
# Use a service account
cred = credentials.Certificate('./credentials')
firebase_admin.initialize_app(cred)
self.client = firestore.client()
def getRef(self, collectionName, documentName):
return self.client.collection(collectionName).document(documentName)
def set(self, ref, entry):
return ref.set(entry)
def update(self, ref, entry):
return ref.update(entry)
def updateTweets(self, ref, entry):
return ref.update({u'retweets': ArrayUnion([entry])})
def create(self, ref, entry):
return ref.create(entry)
您在使用 google-cloud-firestore==0.32.1
吗?
我升级到 32.1
时遇到了同样的问题。
降级为 google-cloud-firestore==0.31.0
,问题消失了。
可能是最近版本的错误。
注意我本地没有测试,只是改了requirements.txt
编辑:
from google.cloud.firestore_v1beta1 import ArrayUnion
应该与0.31.0
一起使用
使用 0.32.0
及更高版本时,导入必须是:
from google.cloud.firestore_v1 import ArrayUnion
见this