【发布时间】:2014-11-06 16:10:06
【问题描述】:
我会尽量解释清楚。
我正在制作一个通讯录,您可以在其中存储以下内容:
没有什么可以阻止您添加两个名字和姓氏相同的人,例如 Tom Sawyer。 现在,假设我们有两个 Tom Sawyer 添加到 Firebase 数据库,在 Firebase 数据库生成的两个随机且唯一的键下。像这样:
它在 HTML 中显示如下:
当您单击其中一个名称旁边的删除按钮时,它应该从 HTML 和数据库中消失。不过,这就是棘手的地方,我无法确定应该从数据库中删除哪个 Tom Sawyer,我不能使用唯一的键名,因为如果我遍历它们并搜索 Tom Sawyer,我会得到两次点击只会随机选择一个。
我的第一个想法是添加第二个唯一 ID 作为属性,但这只会以与唯一 Firebase 密钥 ID 相同的方式失败。唯一 ID 必须与添加的名字和姓氏相关联,而不是随机的(至少在我看来是这样),以便我可以将 HTML Tom Sawyer 与数据库中的 the Tom Sawyer 联系起来。这必须独立发生在数据库中存在多少 Tom Sawyer,否则它将无法工作。
我应该如何解决这个问题?
【问题讨论】:
-
每次添加新联系人时,都将这个全局变量设置为指向它:
newChildRef = newChild.name();。这解释了第二段中的行为。但总的来说,我的建议是在你的removeFromDb函数中放置一个断点,然后看看newChildRef的值是多少。很可能它不是(总是)你期望的那样。 -
你好 Chrillewoodz!欢迎来到社区。对您的一些想法,因为我无法猜测问题的当前状态:a)不鼓励全局变量是有原因的 b)值被设置为键(使用 .name())但是被称为好像它包含一个 ref c)这里有很多与问题集无关的不必要代码和 d)understand the problem set 有很多必要的缺失代码
-
@Kato 我知道现在的问题是什么,但我仍然不知道如何解决它。它基本上归结为这样一个事实,即您可以在数据库中拥有多个具有相同名字和姓氏的人,但是除了键名之外,我没有一个好的方法可以用唯一的 ID 来分隔这些人。我不能用它来识别谁是谁。因此,据我所知,在我弄清楚如何添加唯一的非随机 ID 之前,我的问题没有解决方案。
-
缩小您的问题范围以适应新发现,并包含可用于重现该场景的一小段代码示例,我很乐意为您提供帮助。
-
@Kato 我已经修改了整个问题,希望现在更清楚了。如果您想提供帮助,我将不胜感激。
标签: javascript firebase