使用javascript将数据推送到firebase数据库列表中时如何保存对象uid

Posted

技术标签:

【中文标题】使用javascript将数据推送到firebase数据库列表中时如何保存对象uid【英文标题】:How to save the objects uid when I push the data in firebase database list, using javascript 【发布时间】:2017-06-06 08:29:08 【问题描述】:

我想在 Firebase 数据库中推送新数据时保存 uid。这对于 auth 用户是可能的,但对于数据对象是可能的。

例如,我想要这个对象架构:

"-Kdsfdsg555555fdsgfsdgfs" :   <------- I want this id
  Id : "Kdsfdsg555555fdsgfsdgfs",   <--- How to put that inside 
  name : "A",
  time_updated : "6/6/2017"

有什么方法可以获取这个 id 并将其推送到对象中?

我的代码如下:

categories: FirebaseListObservable<any[]>; 

this.categories = this.db.list('/categories') as FirebaseListObservable<Category[]>;

addCategory(category: any) 
    return this.categories.push(category).then( snap => 
      this.openSnackBar('New category has been added', 'ok');

    ).catch(error => 
      this.openSnackBar(error.message, 'ok');
    );
  

【问题讨论】:

【参考方案1】:

Firebase的push()方法有两种使用方式:

通过传入一个参数,它将生成一个新位置并将参数存储在那里。 不传入任何参数,它只会生成一个新位置。

您可以使用push() 的第二种方式来获取新位置或其密钥:

addCategory(category: any) 
  var newRef = this.categories.push();
  category.Id = newRef.key;
  newRef.set(category).then( snap => 
    this.openSnackBar('New category has been added', 'ok');
  ).catch(error => 
    this.openSnackBar(error.message, 'ok');
  );

但请注意,将项目的密钥也存储在该项目本身内通常是一种反模式。

【讨论】:

以上是关于使用javascript将数据推送到firebase数据库列表中时如何保存对象uid的主要内容,如果未能解决你的问题,请参考以下文章

如何将 GraphQL 中的对象元素推送到 javascript 对象中的嵌套数组中?

将字符串从 JavaEE 后端推送到 Javascript 客户端的任何简单方法?

webview javascript将值推送到上一页不起作用

如果javascript中不存在值,如何推送到多维数组

JavaScript 推送到数组

在将元素推送到 HTML ID 时更新实时 JavaScript 数组