В SQL мы могли бы получить следующий список по этому запросу:
SELECT * FROM Videos WHERE resource = 'youtube' AND isDeleted = false
AND (lastRefreshed IS NULL OR lastRefreshed BETWEEN '2017-01-15' AND '2017-01-22')
В обратной связи JS Мне пришлось повторить некоторую часть условия для каждой части или секции ИЛИ. В этой ситуации, если мне нужно изменить значение isDeleted в условии, мне нужно сделать это дважды, в то время как в операторе SQL я могу изменить его только в одном месте.
async function doRefresh() {
const { Video } = app.models;
const result = await Video.find({
where: {
or: [
{
resource: 'youtube',
isDeleted: false,
lastRefreshed: { "eq": null }
},
{
resource: 'youtube',
isDeleted: false,
lastRefreshed: {
between: ['2017-01-15', '2017-01-22']
}
}
]
}
});
console.log(result);
}
Есть ли лучший способ написать условие для обратной петли JS?
Я нашел следующую опцию, я предполагаю, что есть лучший способ:
async function doRefresh() {
const { Video } = app.models;
const whereBasicCondition = {
resource: 'youtube',
isDeleted: false
};
const result = await Video.find({
where: {
or: [
{
...whereBasicCondition,
lastRefreshed: { "eq": null }
},
{
...whereBasicCondition,
lastRefreshed: {
between: ['2017-01-15', '2017-01-22']
}
}
]
}
});
console.log(result);
}