Firebase REST API POST(推送)子项和顶级项的唯一 ID

Firebase REST API POST (push) unique id for child item as well as top item

在我的应用程序中,用户可以创建 "chains",然后其他用户可以将 "links" 添加到链中。当用户创建一个新链时,他们会用它创建一个 link(不应该有没有 link 的链这样的东西)。

所以我想做这样的事情:

curl -X POST -d '{ "1": "First link for this chain" }' 'https://myapp.firebaseio.com/chains.json'

这将为新链创建一个唯一的时间戳 ID,但问题是我还想要第一个 link 的唯一时间戳 ID,而不是“1”,以便它适合与稍后将推送的 link 的其余部分很好地结合在一起。

我了解到可以使用 JavaScript SDK 等将多个请求放在一起,但是我如何使用 REST API 来做到这一点?

编辑:我没有提到我想在一个请求中完成所有操作,而不是创建一个空链作为一个请求然后推送第一个 link 关于另一个请求。

当您在 REST API 上调用 POST 时,Firebase 服务器会生成一个唯一 ID。但对于有 Firebase SDK 的平台(例如 JavaScript、iOS、Android),Firebase 客户端生成的唯一 ID。

Firebase生成的唯一ID也常被称为"push IDs",因为它们是由JavaScriptpush()方法生成的。要了解有关它们的更多信息,请阅读此 article about push IDs.

生成两个推送 ID 的片段(在 JavaScript 语法中):

var ref = new Firebase('https://myapp.firebaseio.com/chains');
var newChain = ref.push();
console.log(newChain.key());
var newLink = newChain.push();
console.log(newLink.key());
newLink.set('First link for this chain');

最后一行是此代码段中唯一一次对 Firebase 服务器进行任何调用。所有其他操作都是 client-side.

由于您没有使用 Firebase SDK,因此无法使用上面的 JavaScript 代码段。但是您 可以 做与客户端在上面的片段中做的相同的事情:生成一个推送 ID client-side 然后发送一个命令到 REST API.

code for generating push IDs in JavaScript 由 Firebase 在 Github 上发布: