javascript - Firebase:通过推送创建新对象,然后同时推送到它

标签 javascript firebase

工具:Vanilla Firebase 和 Vanilla JavaScript

因此,我正在创建一个新的 convo 并一次性添加它的第一条消息。

convos:{
    uniqueConvoID1:{
        uniqueMessage:{
          text:"Hi Gus"
        },
        ...
    },
    ...
}

但是因为两者都需要一个唯一的 ID,所以我基本上需要同时进行两次推送。其中一个创建新对象(如 uniqueConvoID1),然后在其中创建一条新消息就像(uniqueMessageId)。

我尝试先创建一个空对象,然后推送消息,但我认为先创建一个空对象是无效的。

问题: 然后,当两个对象都需要唯一键时,如何初始化对象内的对象?

我尝试过的:(我推送了一条新消息并取回了 convo。)

var newConvoIDRef =  firebaseConvosRef.push({
    authorName: 'Nick',
    text:"Hey!How you been?",
    timestamp: Date.now() - 99999
 });

在仪表板中创建了这个:

-convos
     - -K2111111111111111 //unique convo id
         -authorName:"Nick"
         -text:"Hey! How have you been?"
         -timestamp:1446866141625

但是我需要以这种方式初始化新的 convo:

 -convos
     - -K2111111111111111 unique convo id
         - -K222444444444444 unique message id
             -authorName:"Nick"
             -text:"Hey! How have you been?"
             -timestamp:1446866141625

最佳答案

我认为你把事情搞得太复杂了。当您添加新值时,Firebase 会自动创建路径。所以这将创建整个链:

var convosRef = new Firebase('https://yours.firebaseio.com/convos');
var convRef = convosRef.push();
var msgRef = convRef.push();

msgRef.set({
    authorName: 'Nick',
    text:"Hey!How you been?",
    timestamp: Date.now() - 99999
 });

注意:当删除路径下的所有值时,Firebase 还会自动清理路径。因此,您可以通过以下方式删除树的整个分支:

msgRef.remove();

关于javascript - Firebase:通过推送创建新对象,然后同时推送到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33578981/

相关文章:

Javascript 序数后缀区域设置翻译

javascript - getTime() 在 chrome 中不起作用

android - 尝试将 apk 上传到 Firebase App Distribution 时出错

javascript - 无论如何如何保持用户登录 Firebase?

javascript - 如何在 md-sidenav 中实用地添加或禁用(删除)md-disable-backdrop

javascript - 将 Agar.io 添加到 iframe

javascript - 使用 Jsoup 提取 "hidden"HTML

ios - Swift & Firebase - 进一步添加 "headers"

javascript - Firebase 云功能已完成,状态为 : 'response error'

云功能的 Firebase Firestore 安全规则