将请求从Angular应用发布到Firebase数据库

时间:2020-05-14 17:17:08

标签: angular firebase http firebase-realtime-database

我已经使用Angular创建了一个照片库应用,我想向新用户添加一个新用户,当新用户在该应用上注册时,该用户数组存储在firebase数据库中。我才刚刚开始发出http请求并使用firebase,但我正在努力了解它的工作方式(我已经阅读了firebase文档)。

这是我创建的帖子请求方法:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

use App\Traits\HasCompositePrimaryKey;

class SkuValor extends Model
{
    use HasCompositePrimaryKey;

    protected $primaryKey = array('producto_id', 'sku_id', 'opcion_id');

    protected $table = 'valores_skus';

    protected $fillable = [
        'producto_id',
        'sku_id',
        'opcion_id',
        'valor_id',
    ];


    public function producto(){
        return $this->belongsTo('App\Models\Producto', 'producto_id');
    }

    public function opcion(){
        return $this->belongsTo('App\Models\OpcionProducto', 'opcion_id', 'opcion_id');
    }

    public function sku(){
        return $this->belongsTo('App\Models\ProductoSku', 'sku_id', 'sku_id');
    }
}

在这里调用该方法:

 addUser(email: string, name: string) {
        return this.http.post('https://photo-gallery-dd8b6.firebaseio.com/users.json', {
            email: email,
            name: name
        }).subscribe(response => {
            console.log(response);
        })
    }

从Angular表单中检索值。

我遇到的问题是,当用户将其添加到firebase数据库中时,它会将它们存储为带有由firebase自动生成的奇怪密钥的嵌套对象:

enter image description here

我想我要实现的目标是存在一个用户对象数组,其中对象名称是用户的电子邮件地址,而该对象的属性是用户的名称。

解决此问题的最佳方法是在本地初始化用户数组,然后在应用程序初始化和添加新用户时使用put请求将users数组保存到数据库中吗?希望这对某人有意义!

1 个答案:

答案 0 :(得分:0)

您可以这样做:

save(file = "not-meh.RData", list = ls()[grepl("^(?!meh)", ls(), perl=TRUE)])

注意:

  1. 我将电子邮件指定为id
  2. 因为我指定了ID,所以我使用的是addUser(email: string, name: string) { const data = { [email]: {email,name} }; return this.http.put('https://photo-gallery-dd8b6.firebaseio.com/users.json', data).subscribe(response => {console.log(response);}) } ,而不是PUT POST方法。