在我的应用程序中进行预订时,用户会选择他们想要的员工。我正在尝试在员工页面上显示一个图表,以显示他们在过去7天内的订单数量。
我正在使用ng2-charts,firebase中的数据和angular2 app。
目前在数据库中只有2个预订。每个工作人员1个。
我到目前为止的代码是这样的,但我没有得到任何结果回到图表,只是一个平坦的结果。
ngOnInit() {
this.af.list('/orders', {
query: {
orderByChild: 'createdAt',
limitToLast: 1
}
}).subscribe((res) => {
let lastOrder: any = res;
var lastDate: any = lastOrder[0].createdAt;
var x;
var dayDuration = 86400000;//milliseconds = 24 hours
x = 7;
lastDate -= 6 * dayDuration;
for (var i = 0; i < x; i++) {
this.barData.labels.push(this.datePipeEn.transform(lastDate, 'dd MMMM'));
lastDate += dayDuration;
}
this.af.list('/orders', {
query: {
orderByChild: 'staffId',
equalTo: this.staffId
}
}).subscribe((res) => {
this.orders = res;
this.order = res.length;
for (var i = 0; i <= this.barData.labels.length - 1; i++) {
var dayValue = 0;
for (var j = 0; j <= this.orders.length - 1; j++) {
var orderDate = this.datePipeEn.transform(this.orders[j].createdAt, 'dd MMMM');
if (orderDate === this.barData.labels[i]) {
dayValue += this.orders[j].grandTotal;
}
}
this.barData.datasets[0].data.push(this.order);
}
})
});
}
如果我删除了函数中的第二个查询:
this.af.list('/orders', {
query: {
orderByChild: 'staffId',
equalTo: this.staffId
}
})
我在图表中得到了这个结果。
我想看到的是图表中的一个订单,而不是现在显示的所有订单的数量(没有第二个查询)。
答案 0 :(得分:0)
所以我自己想出来了。
在构造函数中,我得到了staffId。这是正常的,并通过以下方式拉出类似这样的内容:
-Kr9q2Te04rlXWLyQ6PJ76F
我的问题是,我有一个员工ID存储在数据库中而没有附加破折号,如下所示:
Kr9q2Te04rlXWLyQ6PJ76F
因此它在查询中不匹配。所以我做的是使用字符串slice()函数删除破折号然后它工作!
let staffId = response.$key;
var str = staffId;
var res = str.slice(0, 1);