续集查询nodejs

Posted

技术标签:

【中文标题】续集查询nodejs【英文标题】:Sequelize query nodejs 【发布时间】:2018-12-05 16:40:55 【问题描述】:

我需要根据年龄过滤“收入者”,但在表中我只有出生日期。我需要最小和最大年龄之间的人,我该怎么做?

router.post('/', function (req, res, next) 
    let parameters = JSON.parse(req.body.parameters);
    parameters.states = parameters.states.split();
    parameters.species = parameters.species.split();

    model.person.findAll(
        where: 
            uf: parameters.states,
            species: parameters.species,
            dateBirth: BETWEEN PARAMETERS.MINAGE AND PARAMETERS.MAXAGE
        
    )
        .then(person => res.json(
            error: false,
            data: person
        ))
        .catch(error => res.json(
            error: true,
            data: [],
            error: error
        ));
);

【问题讨论】:

【参考方案1】:

您可以使用between 运算符:

model.person.findAll(
    where: 
        uf: parameters.states,
        species: parameters.species,
        dateBirth: 
          [Op.between]: ['2000-01-01', '2020-01-01'],
        
    
)

【讨论】:

【参考方案2】:

你可以像这样使用它:

var startAge = 18;
var endAge = 20;

var today = moment();
var startDate = today.subtract('years', startAge);
var endDate = today.subtract('years', endAge);

model.person.findAll(
    where: 
        uf: parameters.states,
        species: parameters.species,
        dateBirth: : 
            $between: [startDate, endDate]
        
    
)

【讨论】:

但参数是年龄 startAge: 18, endAge: 20, 出生日期是这样的日期:“YYYY / MM / DD” 意味着你需要在 18 和 20 年前出生,对,所以开始日期是 1998 年 1 月 1 日,结束日期是 2000 年 12 月 31 日,:) @FilippeOliveiraDaSilvaRodr跨度> @FilippeOliveiraDaSilvaRodr,请检查更新的答案,我已经通过使用moment js展示了。【参考方案3】:

您可以在 where 中使用原始查询,例如 -

var Sequelize = require("sequelize");
var now = '2010-01-01';//Current Date

model.person.findAll(
    where: Sequelize.literal('( (ud IN ('+parameters.states+')) AND (species IN ('+parameters.species+')) AND ((DATE_FORMAT(FROM_DAYS(DATEDIFF(dob,'+now+')), "%Y")+0) BETWEEN '+minDate+' AND '+maxDate+')  )')
)

【讨论】:

以上是关于续集查询nodejs的主要内容,如果未能解决你的问题,请参考以下文章

NODEJS - 执行 INNER JOIN 续集

Nodejs续集批量更新

nodejs续集加载嵌套模型

通过模型关联对nodejs进行续集

在 NodeJS 中续集:内部 JOIN 实现失败

续集更新交易