#typescript #typeorm
Вопрос:
Я хочу иметь @ManyToOne
отношения без обратного и определить их следующим образом:
@ManyToOne(() => TrackedItem)
@JoinColumn({ name: "tracked_item_id" })
public trackedItem!: TrackedItem;
Я также пытался:
@ManyToOne(() => TrackedItem, (ti) => ti.id)
@JoinColumn({ name: "tracked_item_id" })
public trackedItem!: TrackedItem;
Но когда я спрашиваю с:
console.log(await con.manager.find(Track));
Я просто не возвращаю trackedItem
собственность.
Track {
id: 4,
timestamp: 1627509600000,
}
Я сохраняю данные следующим образом:
const trackedItem = (await con.manager.find(TrackedItem))[0];
const beforePeriod = Track.from({
timestamp: moment().subtract(1, "day").startOf("day").unix() * 1000,
trackedItem,
});
В то время Track::from
как это:
public static from(from: {
id?: number;
timestamp: number;
trackedItem: TrackedItem;
}): Track {
const track = new Track();
if (from.id) track.id = from.id;
track.timestamp = from.timestamp;
track.trackedItem = from.trackedItem;
return track;
}
Возможно, стоит отметить, что я запускаю это внутри модульного теста, используя базу данных SQLite в памяти. На «производстве» (против постоянной базы данных MYSQL) это, кажется, присутствует, но просто trackedItem: undefined,
.
Ответ №1:
Ответ довольно прост и содержится в документации по любому из отношений (к сожалению, ни одно из них не соответствовало моему варианту использования, поэтому я его не искал). Я здесь предоставляю ссылку для ManyToMany
отношений
Чтобы загрузить пользователя с фотографиями внутри, вы должны указать отношение в
FindOptions
Или, говоря более конкретно:
const users = await userRepository.find({ relations: ["photos"] });