Já používám TypeORM (verze 0.2.40) node.js projekt psaný na Stroji . Vím, že najít záznam z databáze můžu :
userRepository.find({ where: { firstName: "John", company: "foo" } });
To spustí dotaz:
SELECT * FROM "user"
WHERE "firstName" = 'John' AND "company" = 'foo'
Teď mám pole ve stroji, které by mohly mít nebo nebude mít celočíselné hodnoty:
const userIds = params.user_ids; // e.g. undefined or [1,2,3]
Rád bych, můj dotaz se přidat WHERE userIds IN (1,2,3)
pokud userIds
obsahuje takové hodnoty, jinak nemají přidat tato podmínka where.
Snažil jsem se (V tomto případě params
může obsahovat company
nebo nemusí obsahovat příliš):
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?*/});
Mám dvě otázky:
Jak jen přidat", KDE V (...)" pouze tehdy, pokud
params.user_ids
existují (stejně jako proparams.company
)? (Prosím, neváhejte odstranit myandWhere
použití, pokud je elegantní způsob, jak)Co je syntaxe TypeORM přidat", KDE V (...)" logic pro
params.user_ids
za předpokladu, že hodnota existuje?
query.getSql()
ukazuje mi to nepřinášíWHERE IN
aleWHERE "MyEntity"."userId" = $1