【发布时间】:2020-04-07 18:59:49
【问题描述】:
我是 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?
编辑: product 参数是一个对象:console.log(product)
将product:product 更改为productName:product.title 后,错误消失了,firebase 显示:
有没有办法在 firebase 中获取整个对象?
【问题讨论】:
-
你能用 addToCart func 接收到的产品参数的值更新问题吗?
-
是的,我已经更新了@Ramesh
标签: javascript angular firebase firebase-realtime-database angularfire