【问题标题】:Adding and appending value to an array with Realtime Database使用实时数据库向数组添加和附加值
【发布时间】:2021-01-10 02:36:53
【问题描述】:

我正在制作一个 React.js 应用程序,用户可以在其中将歌曲上传到 firebase,然后他将按顺序看到所有上传歌曲的队列。 Queque 可以使用拖放系统进行排序,这将更新 Firebase 中的数据库。上传歌曲时,有没有办法将歌曲插入数组?架构将是:

project-name:
[0]:
   - name
   - artist
   - duration
[1]:
   - name
   - artist
   - duration
[ecc]

如何添加一个数组,然后在数据库中追加项目? 我正在使用 nodejs 作为后端和 socket.io 将新的排序队列发送到节点。

上传歌曲.js:

queueRef.set()
queueRef.update({
   ...metas,
   path: fileName,
}, (error) => {
   if (error) {
      console.log("Data could not be saved." + error)
   } else {
      console.log("Data saved successfully.")
   }
})

songs.js:

io.on('connect', socket => {
    var quequeRef = admin.database().ref()
    quequeRef.on('value', function (snapshot) {
        var queque = snapshot.val()
        if (queque != null) {
            var value = Object.values(queque)
            io.emit('queueSongs', Object.values(value))
        } else {
            io.emit('queueSongs', [])
        }
    })
    socket.on('queueSongs', (songs) => {
        console.log(songs)
        quequeRef.set(songs, (error) => {
            if (error) {
                console.log("Data could not be saved." + error)
            } else {
                console.log("Data saved successfully.")
            }
        })
    })
})

谢谢

【问题讨论】:

  • 你的意思是queue而不是queque?您能否分享您编写的任何无法按您期望的方式工作的代码? documentation 有很多例子可以学习。
  • 是的,我的意思是排队哈哈。我想在数据库中添加一个带有 que 的数组,每次都会更新。但是,当我尝试将一首歌曲附加到数据库时,它被视为一张地图,其名称为由 firebase 生成的随机 id
  • 请编辑问题以显示您的代码未按预期方式工作。我建议阅读:stackoverflow.com/help/minimal-reproducible-example
  • 好的,我编辑了我的问题。我刚刚发现 Firebase 生成的唯一 ID 是按时间顺序排列的。因此,当歌曲队列发生变化时,它会简单地订购新队列并再次发送到实时数据库

标签: javascript node.js reactjs firebase firebase-realtime-database


【解决方案1】:

如果我理解正确的话,我会这样做。

您有一个名为 que 的集合,在您的集合que 中有文档。

当您将信息添加到文档中时,您可能需要添加一个名为 orderId 的键。

这就是您的文档的外观

{
orderId:0,
artist:'haddaway',
title:'baby dont hurt me'
}

因此,当您获取数据时,您会执行类似的操作

db.collection('que').orderBy('orderId').get()

这样,您将始终得到您放入它们的顺序。

【讨论】:

  • 也许我可以使用 orderId,但是当我将一首新歌曲添加到数据库中时,firebase 会自动生成一个带有字母数字字符的 id...我仍然可以访问吗?
  • 是的,因为您拥有将控制列表顺序的 orderID。每个音乐获得的 autoId 根本不重要。
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 2021-05-03
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多