typescript - Este posibil să setezi valorile câmpurilor dintr-un obiect folosind TypeOrm?
Este posibil să setezi valorile câmpurilor dintr-un obiect folosind TypeOrm păstrând siguranța tipurilor?
Toate exemplele pe care le-am găsit în documentație sugerează să setezi proprietățile una câte una
const newUser = new User();
newUser.firstName = 'John'
newUser.lastName = 'Doe'
newUser.role = 'manager'
newUser.phone = '1234567890'
newUser.login = 'john.doe'
newUser.password = '12345'
newUser.save();
Ar fi mult mai plăcut dacă aș putea seta câmpurile în acest mod:
const newUser = new User();
newUser.setFields({
firstName: 'John',
lastName: 'Doe',
role: 'manager',
phone: '1234567890',
login: 'john.doe',
password: '12345'
}
);
newUser.save();
Ar permite utilizarea scurtăturilor
const newUser = new User();
newUser.setFields({
firstName,
lastName,
role,
phone,
login: 'john.doe',
password: '12345'
}
);
newUser.save();
Și folosește compoziția
const newUser = new User();
newUser.setFields({
firstName,
lastName,
role,
phone,
...credentials
}
);
newUser.save();
deși nu am putut găsi nicio modalitate de a face acest lucru.
Înțeleg că trebuie să ai un tip care să descrie forma obiectului tău pentru a-l realiza, dar speram că TS/TsOrm poate să-l deducă cumva din modelele pe care le definesc.
Răspuns #1
Metoda create și merge a unei entități sau a unui repository (în funcție de implementarea ta) va fi cel mai probabil ceea ce cauți:
const userEntity = UserEntity.create({ firstName, lastName, ...someOtherStuff });
const mergedEntity = UserEntity.merge(mergedEntity, { lastName: "new last name" });
Pentru informații suplimentare, consultați documentația și derulați în jos până la metodele menționate, care includ următoarele exemple:
const user = repository.create(); // same as const user = new User();
const user = repository.create({
id: 1,
firstName: "Timber",
lastName: "Saw"
}); // same as const user = new User(); user.firstName = "Timber"; user.lastName = "Saw";
const user = new User();
repository.merge(user, { firstName: "Timber" }, { lastName: "Saw" });
// same as user.firstName = "Timber"; user.lastName = "Saw";
