#typescript #loopbackjs #v4l2loopback
#typescript #loopbackjs #обратный цикл v4l2
Вопрос:
У меня есть форма, в которой я могу зарегистрировать пользователя с одним или несколькими адресами. Чтобы упростить ситуацию, я отправляю в loopback:
{
"id": 0,
"name": "User Name",
"addresses": [
{
"street": "xx",
"city": "xx",
"country": "xx"
},
{
"street": "yy",
"city": "yy",
"country": "yy"
}
]
}
В моей пользовательской модели, которую я определил (у меня тоже есть адресная модель):
export class User extends Entity {
@property({
type: 'number',
id: true,
required: true,
})
id: number;
@property({
type: 'string',
required: true,
})
name: string;
@hasMany(() => Address, {keyTo: ‘user_id’})
Addresses: Array<Address>;
}
Также в UserRepository я определил:
this.addresses = this.createHasManyRepositoryFactoryFor(
'addresses',
AddressRepositoryGetter,
);
Когда я отправляю json, обратный цикл выдает следующую ошибку:
{
"error": {
"statusCode": 422,
"name": "ValidationError",
"message": "The `user` instance is not valid. Details: `addresses` is not defined in the model (value: undefined).",
"details": {
"context": "user",
"codes": {
"addresses": [
"unknown-property"
]
},
"messages": {
"addresses": [
"is not defined in the model"
]
}
}
}
}
Я предполагаю, что отношение «адреса» не считается свойством модели. Как я могу это решить?. Я знаю, что у меня есть возможность выполнить отдельный запрос для сохранения адресов, но я хочу избежать этого.
Ответ №1:
На самом деле эта ошибка выдается datasource juggler, который является базовой библиотекой соединителей для подключения к базе данных. Кажется, столбец адресов не определен в вашей базе данных в таблице User. Пожалуйста, проверьте это.
Комментарии:
1. Спасибо, да, это было все. Как я могу отправить связанные данные в том же запросе? Адреса — это массив, который будет обрабатываться в модели адресов
2. Точно так же, как вы уже отправляете. Вам просто нужно убедиться, что в базе данных есть этот столбец. Однако juggler иногда ведет себя странно. Поэтому в таких случаях я предпочитаю обрабатывать связанные данные отдельно самостоятельно в контроллере. Связанные данные отправляются как есть в том же запросе, но обрабатываются отдельно в контроллере. Попробуйте это, если juggler не создает связанные модели самостоятельно.
3. Я отправлю связанные данные отдельно для обработки в контроллере. Спасибо за совет.