Node.js 如何在Nodejs Sequelize模型查询中设置if条件
我正在尝试使用模型在Nodejs Sequelize查询中使用if条件 如果有过滤参数,我想通过过滤参数选择用户。如果没有,我想选择所有用户。 我是按以下方式做的,但我硬编码了:Node.js 如何在Nodejs Sequelize模型查询中设置if条件,node.js,sequelize.js,Node.js,Sequelize.js,我正在尝试使用模型在Nodejs Sequelize查询中使用if条件 如果有过滤参数,我想通过过滤参数选择用户。如果没有,我想选择所有用户。 我是按以下方式做的,但我硬编码了: var filterData={id:{$ne:null} 使用Sequelize有没有合适的方法?谢谢 函数getData(id,过滤器=“”){ var filterData={id:{$ne:null}; 如果(过滤器!=''){ 过滤器数据={ $or:[ {firstName:{$like:'%1!'+fi
var filterData={id:{$ne:null}代码>
使用Sequelize有没有合适的方法?谢谢
函数getData(id,过滤器=“”){
var filterData={id:{$ne:null};
如果(过滤器!=''){
过滤器数据={
$or:[
{firstName:{$like:'%1!'+filter+'%},
{lastName:{$like:'%1!'+过滤器+'%'}
]
};
}
返回模型['Profile'].findAll({
其中:{profileId:id},
包括:[{
模型:models.Profile.scope('essentials'),
其中:filterData,
作为:“实体”
}]
})
}
我假设您尝试了var filterData={}
或var filterData=true
但没有成功?如果是这样,另一种选择是预先构建include对象,然后有条件地向其中添加where子句:
function getData(id, filter='') {
var includeObj = {
model: models.Profile.scope('essentials'),
as: 'entity'
}
if (filter !== '') {
includeObj.where = {
$or: [
{firstName: {$like: '%' + filter + '%'}},
{lastName: {$like: '%' + filter + '%'}}
]
};
}
return models['Profile'].findAll({
where: { profileId: id },
include: [includeObj]
})
}
这避免了尴尬的“whereid不等于null”条件
还有一个小提示(也许您已经知道这一点,只是更喜欢更显式的代码),但是由于空字符串在javascript中是错误的
if (filter !== '') {
可以替换为
if (filter) {
谢谢,我试过使用空对象和空字符串,但我没有想过这种方法。关于这个
if(filter!='')
我已经试过了:if(filter)
,但是没有用。