Javascript 添加[op.and]以对查询对象进行续集

Javascript 添加[op.and]以对查询对象进行续集,javascript,typescript,object,sequelize.js,javascript-objects,Javascript,Typescript,Object,Sequelize.js,Javascript Objects,我想根据输入参数组装Sequelize查询对象。这适用于数据库键,下面是一个示例: let查询={ 其中:{ 身份证号码:5 } } if(inputName){ 查询['where']['name']={ 名称:inputName } } Model.findAll(查询) 查询输出: query={ 其中:{ id:5, 名称:inputName } } 现在,我想做同样的操作,但在查询中添加and[op.and]: 所需输出: query={ 其中:{ id:5, 名称:inputN

我想根据输入参数组装Sequelize查询对象。这适用于数据库键,下面是一个示例:

let查询={
其中:{
身份证号码:5
}
}
if(inputName){
查询['where']['name']={
名称:inputName
}
}
Model.findAll(查询)
查询输出:

query={
其中:{
id:5,
名称:inputName
}
}

现在,我想做同样的操作,但在查询中添加and[op.and]:

所需输出:

query={
其中:{
id:5,
名称:inputName,
[作品及]=[
{
类型1:输入类型
},
{
类型2:输入类型
}
]
}
}
我无法采用以下方法进行工作:

if(输入类型){
查询['where'][op.and]=[
{
类型1:输入类型
},
{
类型2:输入类型
}
]
}

感谢您对本主题的帮助这里是一个工作示例:

从'../../db'导入{sequelize};
从“sequelize”导入{Model,DataTypes,Op};
类用户扩展模型{}
User.init(
{
身份证:{
类型:DataTypes.INTEGER,
primaryKey:没错,
自动递增:真,
allowNull:错,
},
名称:DataTypes.STRING,
type1:DataTypes.STRING,
type2:DataTypes.STRING,
},
{sequelize,tableName:'users',modelName:'user'},
);
(异步函数(){
试一试{
wait sequelize.sync({force:true});
//种子
等待User.bulkCreate([
{id:1,名字:'mike',类型1:a',类型2:a'},
{id:2,名称:'tobias',类型1:'c',类型2:'d'},
]);
//试验
常量inputType='a';
常量inputName='mike';
const query={其中:{id:1,name:inputName};
如果(输入类型){
查询['where'][Op.and]=[{type1:inputType},{type2:inputType}];
}
const r=wait User.findAll(查询);
控制台日志(r);
}捕获(错误){
console.log(错误);
}最后{
等待续集。关闭();
}
})();
执行结果:

执行(默认):如果存在“用户”级联,则删除表;
执行(默认):如果存在“用户”级联,则删除表;
执行(默认):如果不存在“用户”,则创建表(“id”序列、“名称”VARCHAR(255)、“type1”VARCHAR(255)、“type2”VARCHAR(255)、主键(“id”);
执行(默认):选择i.relname作为名称,ix.indprimary作为主要,ix.indunique作为唯一,ix.indkey作为indkey,array_agg(a.attnum)作为列索引,array_agg(a.attname)作为列名称,pg_get_indexdef(ix.indexrelid)作为pg_class t,pg_class i,pg_index ix的定义,pg_属性a,其中t.oid=ix.indrelid和i.oid=ix.indexrelid和a.attrelid=t.oid和t.relkind='r'和t.relname='users'按i.relname分组,ix.indexrelid,ix.indprimary,ix.indisunique,ix.indkey按i.relname排序;
执行(默认):在“用户”(“id”、“name”、“type1”、“type2”)中插入值(1、'mike'、'a'、'a')、(2、'tobias'、'c'、'd'),返回*;
执行(默认):从“用户”中选择“id”、“名称”、“类型1”、“类型2”作为“用户”,其中(“用户”、“类型1”=“a”和“用户”、“类型2”=“a”)和“用户”、“id”=1和“用户”、“名称”=“mike”;
[用户{
数据值:{id:1,name:'mike',type1:'a',type2:'a'},
_previousDataValues:{id:1,名称:'mike',类型1:'a',类型2:'a'},
_更改:{},
_型号选项:
{时间戳:false,
验证:{},
表名:true,
错,,
偏执狂:错,
拒绝空:错,
whereCollection:[对象],
schema:null,
SchemadeLimitor:“”,
defaultScope:{},
作用域:{},
索引:[],
名称:[对象],
省略null:false,
续集:[续集],
tableName:'用户',
钩子:{},
_选项:
{isNewRecord:false,
_schema:null,
_SchemadeLimitor:“”,
raw:是的,
属性:[Array]},
isNewRecord:false}]
数据库中的数据记录:

node sequelize examples=#从用户中选择*;
id |名称|类型1 |类型2
----+--------+-------+-------
1 |迈克| a | a
2 |托比亚斯| c | d
(2排)