【发布时间】: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) 它将在控制台中打印密钥。 请帮我。我通过互联网搜索了很多没有找到任何答案。已经一个星期了,我被这个困住了。
【问题讨论】: