我正在阅读Firebase的documentation,我来到了这一部分:

function writeNewPost(uid, username, picture, title, body) {
    // A post entry.
    var postData = {
    author: username,
    uid: uid,
    body: body,
    title: title,
    starCount: 0,
    authorPic: picture
  };

  // Get a key for a new Post.
  var newPostKey = firebase.database().ref().**child('posts')**.push().key;


我应该怎么理解?当前,我在想这是在说“从数据库的根开始,创建一个节点并将其访问密钥存储在变量中”。将子功能与“帖子”一起使用有什么用?我可以运行类似以下的代码并获得相同的结果。

  var newPostKey = firebase.database().ref().push().key;

最佳答案

当在文档的其余代码示例的上下文中进行获取时,您的第二部分代码实际上并不会给出相同的结果(此处未显示)。

实际上,您显示的代码实际上根本不会在数据库中创建任何数据,因为如果没有将任何信息传递给push(),那么它只会返回对该位置的引用(带有唯一键),您以后可以编写该位置至。您省略的样本部分实际上执行了更新。

child()的API文档说:


  获取指定相对路径处位置的引用。


该方法可帮助您建立参考的路径。在第二个示例中,如果不调用child(),则引用将位于数据库的根目录,而不是在“ / posts”目录下。虽然在两种情况下都将获得唯一密钥,但是其在数据库中的位置将有所不同(在此实际写入数据之后)。

08-18 01:26