API di EntityManager
Traduzione Beta Non Ufficiale
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
dataSource- Il DataSource utilizzato daEntityManager.
const dataSource = manager.dataSource
queryRunner- Il query runner utilizzato daEntityManager. Usato solo nelle istanze transazionali di EntityManager.
const queryRunner = manager.queryRunner
transaction- Fornisce una transazione in cui più richieste al database verranno eseguite in un'unica transazione. Scopri di più sulle Transazioni.
await manager.transaction(async (manager) => {
// NOTE: you must perform all database operations using the given manager instance
// it's a special instance of EntityManager working with this transaction
// and don't forget to await things here
})
query- Esegue una query SQL raw.
const rawData = await manager.query(`SELECT * FROM USERS`)
// You can also use parameters to avoid SQL injection
// The syntax differs between the drivers
// aurora-mysql, better-sqlite3, capacitor, cordova,
// expo, mariadb, mysql, nativescript, react-native,
// sap, sqlite, sqljs
const rawData = await manager.query(
"SELECT * FROM USERS WHERE name = ? and age = ?",
["John", 24],
)
// aurora-postgres, cockroachdb, postgres
const rawData = await manager.query(
"SELECT * FROM USERS WHERE name = $1 and age = $2",
["John", 24],
)
// oracle
const rawData = await manager.query(
"SELECT * FROM USERS WHERE name = :1 and age = :2",
["John", 24],
)
// spanner
const rawData = await manager.query(
"SELECT * FROM USERS WHERE name = @param0 and age = @param1",
["John", 24],
)
// mssql
const rawData = await manager.query(
"SELECT * FROM USERS WHERE name = @0 and age = @1",
["John", 24],
)
sql- Esegue una query SQL raw utilizzando template literals.
const rawData =
await manager.sql`SELECT * FROM USERS WHERE name = ${"John"} and age = ${24}`
Scopri la sintassi SQL Tag.
createQueryBuilder- Crea un query builder utilizzato per costruire query SQL. Scopri di più sul QueryBuilder.
const users = await manager
.createQueryBuilder()
.select()
.from(User, "user")
.where("user.name = :name", { name: "John" })
.getMany()
hasId- Verifica se l'entità specificata ha la sua proprietà di colonna primaria definita.
if (manager.hasId(user)) {
// ... do something
}
getId- Ottiene il valore della proprietà della colonna primaria dell'entità specificata. Se l'entità ha chiavi primarie composite, il valore restituito sarà un oggetto con nomi e valori delle colonne primarie.
const userId = manager.getId(user) // userId === 1
create- Crea una nuova istanza diUser. Accetta opzionalmente un oggetto letterale con proprietà utente che verranno scritte nel nuovo oggetto utente creato.
const user = manager.create(User) // same as const user = new User();
const user = manager.create(User, {
id: 1,
firstName: "Timber",
lastName: "Saw",
}) // same as const user = new User(); user.firstName = "Timber"; user.lastName = "Saw";
merge- Combina più entità in una singola entità.
const user = new User()
manager.merge(User, user, { firstName: "Timber" }, { lastName: "Saw" }) // same as user.firstName = "Timber"; user.lastName = "Saw";
preload- Crea una nuova entità a partire da un oggetto JavaScript semplice. Se l'entità esiste già nel database, la carica (e tutto ciò che è correlato), sostituisce tutti i valori con quelli nuovi dall'oggetto fornito, e restituisce la nuova entità. La nuova entità viene effettivamente caricata dal database con tutte le proprietà sostituite dal nuovo oggetto.
const partialUser = {
id: 1,
firstName: "Rizzrak",
profile: {
id: 1,
},
}
const user = await manager.preload(User, partialUser)
// user will contain all missing data from partialUser with partialUser property values:
// { id: 1, firstName: "Rizzrak", lastName: "Saw", profile: { id: 1, ... } }
save- Salva un'entità o un array di entità specificato. Se l'entità esiste già nel database, viene aggiornata. Se l'entità non esiste ancora nel database, viene inserita. Salva tutte le entità specificate in un'unica transazione (nel caso in cui l'entity manager non sia transazionale). Supporta anche l'aggiornamento parziale poiché tutte le proprietà non definite vengono saltate. Per impostare un valore suNULL, è necessario impostare manualmente la proprietà sunull.
await manager.save(user)
await manager.save([category1, category2, category3])
remove- Rimuove un'entità o un array di entità specificato. Rimuove tutte le entità specificate in un'unica transazione (nel caso in cui l'entity manager non sia transazionale).
await manager.remove(user)
await manager.remove([category1, category2, category3])
insert- Inserisce una nuova entità o un array di entità.
await manager.insert(User, {
firstName: "Timber",
lastName: "Timber",
})
await manager.insert(User, [
{
firstName: "Foo",
lastName: "Bar",
},
{
firstName: "Rizz",
lastName: "Rak",
},
])
update- Aggiorna entità per id entità, ids o condizioni specificate. Imposta i campi dall'entità parziale fornita.
await manager.update(User, { age: 18 }, { category: "ADULT" })
// executes UPDATE user SET category = ADULT WHERE age = 18
await manager.update(User, 1, { firstName: "Rizzrak" })
// executes UPDATE user SET firstName = Rizzrak WHERE id = 1
updateAll- Aggiorna tutte le entità del tipo target (senza clausola WHERE). Imposta i campi dall'entità parziale fornita.
await manager.updateAll(User, { category: "ADULT" })
// executes UPDATE user SET category = ADULT
upsert- Inserisce una nuova entità o array di entità a meno che non esistano già, nel qual caso vengono invece aggiornate. Supportato dai driver AuroraDataApi, Cockroach, Mysql, Postgres e Sqlite.
Quando un'operazione upsert risulta in un aggiornamento (a causa di un conflitto), colonne speciali come @UpdateDateColumn e @VersionColumn vengono automaticamente aggiornate ai valori correnti.
await manager.upsert(
User,
[
{ externalId: "abc123", firstName: "Rizzrak" },
{ externalId: "bca321", firstName: "Karzzir" },
],
["externalId"],
)
/** executes
* INSERT INTO user
* VALUES
* (externalId = abc123, firstName = Rizzrak),
* (externalId = cba321, firstName = Karzzir),
* ON CONFLICT (externalId) DO UPDATE firstName = EXCLUDED.firstName
**/
delete- Elimina entità per id entità, ids o condizioni specificate.
await manager.delete(User, 1)
await manager.delete(User, [1, 2, 3])
await manager.delete(User, { firstName: "Timber" })
deleteAll- Elimina tutte le entità del tipo target (senza clausola WHERE).
await manager.deleteAll(User)
// executes DELETE FROM user
Vedi anche il metodo clear, che esegue un'operazione TRUNCATE TABLE sul database.
increment- Incrementa una colonna di un valore fornito per le entità che corrispondono alle opzioni specificate.
await manager.increment(User, { firstName: "Timber" }, "age", 3)
decrement- Decrementa una colonna di un valore fornito per le entità che corrispondono alle opzioni specificate.
await manager.decrement(User, { firstName: "Timber" }, "age", 3)
exists- Verifica se esiste almeno un'entità che corrisponde alleFindOptions.
const exists = await manager.exists(User, {
where: {
firstName: "Timber",
},
})
existsBy- Verifica se esiste almeno un'entità che corrisponde aFindOptionsWhere.
const exists = await manager.existsBy(User, { firstName: "Timber" })
count- Conta le entità che corrispondono aFindOptions. Utile per l'impaginazione.
const count = await manager.count(User, {
where: {
firstName: "Timber",
},
})
countBy- Conta le entità che corrispondono aFindOptionsWhere. Utile per l'impaginazione.
const count = await manager.countBy(User, { firstName: "Timber" })
find- Trova le entità che corrispondono alleFindOptionsspecificate.
const timbers = await manager.find(User, {
where: {
firstName: "Timber",
},
})
findBy- Trova le entità che corrispondono alleFindWhereOptionsspecificate.
const timbers = await manager.findBy(User, {
firstName: "Timber",
})
findAndCount- Trova le entità che corrispondono alleFindOptionsspecificate. Conta inoltre tutte le entità che corrispondono alle condizioni fornite, ignorando le impostazioni di impaginazione (opzioni from e take).
const [timbers, timbersCount] = await manager.findAndCount(User, {
where: {
firstName: "Timber",
},
})
findAndCountBy- Trova le entità che corrispondono aFindOptionsWherespecificate. Conta anche tutte le entità che corrispondono alle condizioni date, ignorando le impostazioni di paginazione (opzioni from e take).
const [timbers, timbersCount] = await manager.findAndCountBy(User, {
firstName: "Timber",
})
findOne- Trova la prima entità che corrisponde alleFindOptionsspecificate.
const timber = await manager.findOne(User, {
where: {
firstName: "Timber",
},
})
findOneBy- Trova la prima entità che corrisponde alleFindOptionsWherespecificate.
const timber = await manager.findOneBy(User, { firstName: "Timber" })
findOneOrFail- Trova la prima entità che corrisponde a un ID o opzioni di ricerca. Respinge la promise restituita se non viene trovata alcuna corrispondenza.
const timber = await manager.findOneOrFail(User, {
where: {
firstName: "Timber",
},
})
findOneByOrFail- Trova la prima entità che corrisponde alleFindOptionsspecificate. Respinge la promise restituita se non viene trovata alcuna corrispondenza.
const timber = await manager.findOneByOrFail(User, { firstName: "Timber" })
clear- Svuota tutti i dati dalla tabella specificata (la tronca o elimina).
await manager.clear(User)
getRepository- Ottiene unRepositoryper eseguire operazioni su una specifica entità. Scopri di più sui Repository.
const userRepository = manager.getRepository(User)
getTreeRepository- Ottiene unTreeRepositoryper eseguire operazioni su una specifica entità. Scopri di più sui Repository.
const categoryRepository = manager.getTreeRepository(Category)
getMongoRepository- Ottiene unMongoRepositoryper eseguire operazioni su una specifica entità. Scopri di più su MongoDB.
const userRepository = manager.getMongoRepository(User)
withRepository- Ottiene un'istanza di repository personalizzato utilizzata in una transazione. Scopri di più sui Repository personalizzati.
const myUserRepository = manager.withRepository(UserRepository)
release- Rilascia il query runner di un entity manager. Utilizzato solo quando il query runner è stato creato e gestito manualmente.
await manager.release()