#node.js #loopbackjs
#node.js #loopbackjs
Вопрос:
У меня есть один простой вопрос о цикле 4 и отношениях.
Давайте возьмем, к примеру, официальный пример ToDoList.
В @hasMany
есть TodoList.model
определение, у меня там нет вопросов. Мой вопрос касается отношения belongsTo, необходимо ли также определять @belongsTo
в todo.model
? Всегда ли необходимо определять оба отношения или как я могу узнать, какое из них выбрать? Если необходимо только одно отношение, то почему нужно выбирать два отношения? В чем будут различия, если я выберу одно вместо другого?
У меня много сомнений по этой теме.
Ответ №1:
Оба этих типа отношений, хотя и представляют собой схожий вид отношений, имеют тонкие отличия друг от друга.
Как мы можем видеть из документации здесь,
Отношение hasMany обозначает соединение модели «один ко многим» с другой моделью посредством ссылочной целостности. Ссылочная целостность обеспечивается ограничением внешнего ключа для целевой модели, которая обычно ссылается на первичный ключ в исходной модели. Это отношение указывает, что каждый экземпляр объявляющей или исходной модели имеет ноль или более экземпляров целевой модели. Например, в приложении с клиентами и заказами у клиента может быть много заказов
Итак, в случае, когда вам нужно иметь отношение FK 1: n, тогда вы будете использовать это. Но это будет использоваться, когда FK находится на «одной» стороне. Это означает, что таблица customer (one) будет содержать столбец orders (many) в виде массива FK с таблицей Order.
Как мы можем видеть из документации здесь,
Отношение belongsTo обозначает соединение модели «многие к одному» с другой моделью посредством ссылочной целостности. Ссылочная целостность обеспечивается ограничением внешнего ключа для исходной модели, которая обычно ссылается на первичный ключ в целевой модели. Это отношение указывает, что каждый экземпляр объявляющей или исходной модели принадлежит ровно одному экземпляру целевой модели. Например, в приложении с клиентами и заказами заказ всегда принадлежит только одному клиенту
Итак, в случае, когда вам нужно иметь отношение FK 1: n, тогда вы будете использовать это. Но это будет использоваться, когда FK находится на стороне «многих». Это означает, что таблица Order (many) будет содержать столбец customer (one) в виде FK с таблицей Customer. Здесь нет необходимости в массиве.
Однако большую часть времени вы будете использовать отношения Belongsto для таких случаев. Это работает почти во всех сценариях. Я еще не сталкивался с каким-либо конкретным случаем использования hasMany.