Я пытаюсь реализовать вложенные datastore
запросы в Node/express
.Родительский запрос - это простой запрос get
для kind
, а дочерний запрос агрегирует определенный столбец из других kind
на основе определенного значения столбца родительских kind
результатов, полученных выше.Пожалуйста, проверьте код ниже для лучшего понимания.
app.get("/api/venues/", (req, res, next) => {
const query = datastore
.createQuery('venue');
// parent query run here
query.run().then(([venuesList]) => {
venuesList.forEach(
venue => {
startDate = moment(new Date()).format('L');
endDate = moment(new Date()).startOf('week').format('L');
const queryVenueInvoice = datastore
.createQuery('invoices')
.filter('targetacntkey', '=', venue.userid);
// child query run here
queryVenueInvoice.run().then(([invoicesList]) => {
const filteredInvoiceList = invoicesList.filter( invoice =>
(new Date(invoice.timestamp).toISOString().split('T')[0])
<= startDate && (new Date(i.timestamp).toISOString().split('T')[0]) >= (endDate));
venue['weeklySummary'] = filteredInvoiceList.reduce((sum, invoice) => {
return sum + invoice.totalamount; }, 0);
})
venue['venueKey'] = venue[datastore.KEY]
}
);
// venuesList.forEach(venue => console.log(venue));
res.status(200).json(
{
message: "Request was processed successfully!",
venues: venuesList
}
);
})
})
Я могу получить ответ в виде массива venuesList
, заполненного venueKey
.Однако я не могу увидеть агрегированное свойство weeklySummary
в ответе.Что мне здесь не хватает?Кто-нибудь ведет меня так, чтобы увидеть ожидаемые результаты?