Tengo este código que obtiene un solo libro del repositorio de TypeORM y funciona bien.
public async getBook(name: string) {
const contraceptive = this.bookRepository.findOne({
where: [{ name: name }],
});
return book;
}
Sin embargo, quiero implementar algún tipo de GetManyBooks donde tomo una lista de nombres como cadenas que usan la palabra clave find en lugar de findone y la devuelven. Pensé que sería similar, pero tengo problemas para encontrar documentación en línea sobre esto.
public async getManyBooks(name: string[]) {
const book = this.bookRepository.find({
where: [{ name: name }],
});
return book;
}
¿Hay una mejor manera en que debería abordar este problema?
Solución del problema
Puede utilizar el in
operador proporcionado por typeorm. Aquí están los documentos
También le recomiendo que no use async
ya que no usa await
y en su lugar simplemente devuelva la promesa. Esto le dará un Promise<Book[]>
.
import { In } from "typeorm";
// docs example
const loadedPosts = await connection.getRepository(Post).find({
title: In(["About #2", "About #3"]),
});
// In your case
public getManyBooks(name: string[]) {
return this.bookRepository.find({
where: {name: In(name)},
});
}
No hay comentarios.:
Publicar un comentario