I am using TypeORM (version 0.2.40) in my node.js project written in TypeScript . I know to find a record from database I can do :
userRepository.find({ where: { firstName: "John", company: "foo" } });
It executes query:
SELECT * FROM "user"
WHERE "firstName" = 'John' AND "company" = 'foo'
Now I have an array in typescript which might hold or might not hold integer values:
const userIds = params.user_ids; // e.g. undefined or [1,2,3]
I would like my query to add WHERE userIds IN (1,2,3) if userIds contains such values otherwise don't add this where condition.
I tried (In this case params might contain a company or might not contain too):
const {params} = parseRequest();
query: SelectQueryBuilder<MyEntity> = ...;
query.where({
firstName: 'John',
...(params.company && { company: params.company }), // add 'company' condition only if value exists
}).andWhere({/* how to do here have 'WHERE IN (1,2,3)' if value exist?*/});
I have two questions:
How to only add the "WHERE IN (...)" only if
params.user_idsexist (same as forparams.company)? (Please feel free to remove myandWhereusage if there is a neat way)What is the syntax of TypeORM to add the "WHERE IN (...)" logic for
params.user_idsassuming value exists?
You can use a simple conditional along with the
INoperator. E.g.Resources: