【发布时间】:2019-10-01 21:36:10
【问题描述】:
我正在使用 Firebase 和 Firestore 构建一个简单的聊天应用程序。我脑海中的伪模式是这样的:
• threads: collection
|
+---- • friend_id: str
• last_messaged: timestamp
• messages: collection
|
+---- • sender_id: str
• text: str
• timestamp: timestamp
现在,假设我的 id 为 420 的朋友第一次给我发消息。我想通过创建一个新线程来存储这些数据。假设我使用以下命令执行此操作:
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var db = admin.firestore();
var thread_id = '212';
var message_id = '3498213712';
db.collection('threads').add({
id: thread_id,
friend_id: '420',
last_messaged: 1557862539,
messages: [
{
id: message_id,
sender_id: '420',
text: 'Hello',
timestamp: 1557862539
}
]
})
这是正确的做事方式吗?由于我在该字段中发送 JSON 对象,是否会自动创建一个名为 messages 的集合?如果没有,我该如何以正确的方式做到这一点?
编辑:也许我之前不够清楚。我希望messages 成为sub-collection。根据下面的评论,现在它是一个数组。
EDIT2:threads id 和 messages 都不是随机的。更新代码以反映这一点。
NOT DUPLICATE:不与 cmets 中链接的问题重复,因为该问题针对 Java 和 Android SDK,而此问题针对 Javascript。
【问题讨论】:
-
这将在线程文档上创建一个数组字段。
-
@Herohtar - 请你写一个答案解释如何?
-
您提出的解决方案有什么问题?有什么事情没有按照您的预期工作吗?
-
@DougStevenson 我在架构中特别提到
messages必须是一个集合。我写的代码根据Herothar的评论创建了一个数组字段。
标签: javascript firebase google-cloud-firestore