我有一个连接到 firebase firestore 的不和谐机器人。我可以获取/设置集合和文档的数据,但当我尝试设置时却无法获取/设置
subcollections
。
这是我的代码的一部分:
import discord
from discord import app_commands
from discord.ext import commands
from firebase_admin import firestore
db = firestore.client()
class Upload(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
@app_commands.command(name='upload', description="desc")
async def upload(self, interaction: discord.Interaction, name: str, file: discord.Attachment):
print(file.url)
print(interaction.guild.id)
db_server = db.collection("servers").document(str(interaction.guild.id))
db_drop_items = db_server.collection("drop_items")
db_drop_items.set({"name" : name, "image": file.url}, merge=True)
await interaction.response.send_message('Answered')
这里的问题是
db_drop_items.set
未被识别为 firestore 方法,并在执行命令时返回此错误:
但是当我尝试将其指向主集合时,它可以工作并被添加到数据库中。
db_server = db.collection("servers").document(str(interaction.guild.id))
# db_drop_items = db_server.collection("drop_items")
db_server.set({"name" : name, "image": file.url}, merge=True)
Python Firestore 无法识别子集合上的 set 函数。
这是预期的行为,因为 set() 函数存在于 DocumentReference 中,而 not 位于 CollectionReference 类中。因此,如果您想使用
CollectionReference
对象添加一些数据,那么您必须调用 add() 函数,其中:
使用提供的数据在 Firestore 数据库中创建文档。