【问题标题】:Cant store the Firebase nide key in local storage无法将 Firebase 节点密钥存储在本地存储中
【发布时间】:2021-03-02 22:25:59
【问题描述】:

我正在尝试将 firebase 节点的密钥创建到本地存储中后立即存储它,但它说 setItem 不会采用空值。 这是我的服务组件

import { Injectable } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';

@Injectable({
  providedIn: 'root'
})
export class FireserviceService {

  constructor(private db: AngularFireDatabase) {
    
   }
  private create(){
      return this.db.list('/shopping-carts').push({
      dateCreated:new Date().getTime()
    });
  }
  
  private getCart(cartId:string){
     return this.db.object('/shopping-carts/'+ cartId);
  }
  public async getOrCreateCart(){
    let cartId=localStorage.getItem('cartId');
    if(!cartId){
      
      let result= await this.create();
      let val=result.key;
      localStorage.setItem('cartId',result.key);
      console.log(val)
      
    }
    return this.getCart("");
  }
  
}

这是我的大脑组件

import { Injectable } from '@angular/core';
import { AngularFireDatabase } from 'angularfire2/database';

@Injectable({
  providedIn: 'root'
})
export class FireserviceService {

  constructor(private db: AngularFireDatabase) {
    
   }
  private create(){
      return this.db.list('/shopping-carts').push({
      dateCreated:new Date().getTime()
    });
  }
  
  private getCart(cartId:string){
     return this.db.object('/shopping-carts/'+ cartId);
  }
  public async getOrCreateCart(){
    let cartId=localStorage.getItem('cartId');
    if(!cartId){
      
      let result= await this.create();
      let val=result.key;
      localStorage.setItem('cartId',result.key);
      console.log(val)
      
    }
    return this.getCart("");
  }
  
}

我正在尝试从大脑组件调用 getOrCreateCart 并创建购物车或获取购物车服务组件。创建购物车后,我想将密钥存储在本地存储中,这样同一用户就不会在我的 firebase 中创建多个节点。但是在服务组件中

localStorage.setItem('cartId',result.key);

行不通。对于第二个参数 result.key 它说“'string | null'类型的参数不能分配给'string'类型的参数。 类型 'null' 不可分配给类型 'string'.ts(2345)"。 而如果 console.log(val) 或 console.log(result.key) 它将在控制台中打印密钥。 请帮我。我通过互联网搜索了很多没有找到任何答案。已经一个星期了,我被这个困住了。

【问题讨论】:

    标签: angular firebase


    【解决方案1】:

    result.key 可能是字符串 null。 localStorage.setItem(key, value); 只接受字符串而不接受 null,因此需要提供默认值以防 result.key 为 null:

    localStorage.setItem('cartId',result.key ?? '');
    

    【讨论】:

      猜你喜欢
      • 2014-10-22
      • 1970-01-01
      • 2016-12-15
      • 2012-01-15
      • 2014-03-25
      • 2015-05-04
      • 2015-07-21
      • 2015-11-24
      • 1970-01-01
      相关资源
      最近更新 更多