Я должен реализовать подписку, в которой пользователи могут подписаться на свои продукты, которые будут доставлены ему по каждому alternate
с даты его подписания или с Two Day Gap
с указанной даты.Если текущая дата является альтернативной датой
//Sample Data
[
{
"subscribed_on": ISODate("2017-01-01T08:15:39.736Z"),
"_id" : 1,
"customer" : "jon doe",
"type": "alternate"
},
{
"subscribed_on": ISODate("2017-01-02T08:15:39.736Z"),
"_id" : 1,
"customer" : "Doe John",
"type": "Two Day Gap"
},
{
subscribed_on: ISODate("2017-01-02T08:15:39.736Z"),
"_id" : 1,
"customer" : "Foo Name",
"type": "alternate"
}
]
Теперь для каждого дня я должен запросить, чтобы найти список клиентов, у которых есть доставка на сегодняшнюю дату.
Как я могу суммировать, чтобы подсчитать, является ли текущая дата alternate
или находится в two-day gap
?
Чтобы упростить запрос для альтернативного варианта, я могу проверить, является ли текущая дата even or odd
и будет запрашивать дату, противоположную ей. Например, если текущая дата равна 1st Jan
, то есть odd
Я могу запросить, чтобы найти дату, которая является even
для alternate
подписного запроса. Это правильный эффективный способ поиска альтернативной даты?
Каким будет текущий способ найти подписку на Two Day Gap
?
Вы можете перебрать массив и посмотреть, совпадает ли элемент даты * signed_on * с частью даты 'new Date(). ToISOString()'. Затем проверьте, является ли * тип * «альтернативным» или нет. Обратите внимание, что использование дат, основанных на UTC, может иметь явные расхождения с местными датами из-за часовых поясов. – RobG