gpt4 book ai didi

swift - 基于 "Master Collection"更新 Cloud Firestore 集合

转载 作者:行者123 更新时间:2023-11-28 15:05:10 27 4
gpt4 key购买 nike

我正在创建一个 iOS 应用程序来帮助收集小雕像的用户跟踪他们的小雕像并查看实时价格信息。

我有两个集合:

  1. “大师”收藏

    • 这实际上是一个包含数千个小雕像的目录,用户可以选择添加到他们的收藏中。它包含有关每个项目的信息,例如艺术家、原价、条形码、年份、评论等。
  2. “用户”集合

    • 这包含每个用户的文档。这些“用户”文档中的每一个都有一个子集合,其中包含他们添加到集合中的每个小雕像的文档。

目前,如果用户想要将新项目添加到他们的个人收藏中,他们会转到“主”集合 UITableView 并滑动以添加项目。 item 文档基本上是从“master”集合中复制的,并在 user 子集合中创建了一个新文档。然后他们可以转到显示他们添加的项目的 UITableView。他们可以选择添加自己的商品信息,例如评论、购买日期、售出日期、购买价格等。

我的问题:如何在用户集合/子集合中的文档与主集合中的文档之间同步信息?假设某个项目的“市场价格”上涨了,所以我更新了主收藏数据库。我怎样才能让这个价格变化显示在所有用户的收藏中?

我假设使用 Cloud Functions,但我想在这里发帖以防万一有更简单的方法。

最佳答案

这绝对是 Cloud Functions 的一个很好的用途。为您的 /users{uid}/figurines/{figurineId} 集合创建一个 onUpdate 触发器,然后使用它来将更新的数据复制到 master。

您可以复制特定字段,也可以通过检查 event.data.data()event.data.previous.data() 来检查差异。

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

admin.initializeApp(functions.config().firebase);

const db = admin.firestore();

exports.updateMaster = functions.firestore
.document('users/{uid}/figurines/{figurineId}')
.onUpdate(event => {
var newData = event.data.data();
var oldData = event.data.previous.data();
var updateData = {};

if (oldData.price != newData.price) {updateData.price = newData.price}
// Add any more changes that you may want to compare / update below...

// Then...
return db
.collection('master')
.doc(event.params.figurineId)
.update(updateData).then(response => {

console.log('We updated figurine', event.params.figurineId);
}).catch(err => {
console.error('There was an error', err);
});
});

关于swift - 基于 "Master Collection"更新 Cloud Firestore 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48585641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com