我是angular的新手,我正在尝试在angular项目上实现购物车功能。这是添加到购物车的功能:
async addToCart(product: Productsobj) {
let cartId = await this.getOrCreateCartId();
let item$ = this.db.object(
"/shopping-carts/" + cartId + "/items/" + product.$key
);
item$
.valueChanges()
.pipe(take(1))
.subscribe((p: any) => {
if (p) item$.update({ quantity: p.quantity + 1 });
else item$.set({ product: product, quantity: 1 });
});
}
这里是错误:
core.js:6014错误错误:Reference.set失败:第一个参数在属性'shopping-carts.-Lw2GnUrgt9nMyNKznlW.items.-KrqgOLs07ZkbapP4EGi.product'中包含无效的键($ key)。键必须是非空字符串,并且不能包含“。”,“#”,“ $”,“ /”,“ [”或“]”
我尝试将功能更改为:
async addToCart(product: Productsobj) {
let cartId = await this.getOrCreateCartId();
let item$ = this.db.object(
"/shopping-carts/" + cartId + "/items/{{product.$key}}"// changed product.$key
);
item$
.valueChanges()
.pipe(take(1))
.subscribe((p: any) => {
if (p) item$.update({ quantity: p.quantity + 1 });
else item$.set({ product: product, quantity: 1 });
});
}
现在得到的错误是:
core.js:6014错误错误:未捕获(承诺):错误:Reference.child失败:第一个参数是无效路径=“ /shopping-carts/-Lw2GnUrgt9nMyNKznlW/items/{{product.$key}}” 。路径必须是非空字符串,并且不能包含“。”,“#”,“ $”,“ [”或“]”
我如何正确解开product.$key
?
尝试以下操作:
let key = product["$key"];
let item$ = this.db.object("/shopping-carts/" + cartId + "/items/" + key);
使用方括号访问属性$key
。另外,最好将属性$key
更改为key