2017-02-03 2 views
0

В настоящее время мы пытаемся написать сценарий создания образца данных, чтобы вставить некоторые данные в наш db для тестирования API. У нас есть несколько отношений «многие ко многим», которые не проходят через другую модель, поэтому loopback генерирует ассоциативные таблицы и их ключи (объект 1 fk, объект 2 fk).Loopback automigrate many to many

Наши образцы данных хранятся в файлах JSON, которые мы позже загружаем и передаем им в функцию автонастройки источника данных.

Проблема, с которой мы столкнулись, заключается в том, что источник данных не может переносить данные, хранящиеся в ассоциативных таблицах (даже если они существуют в базе данных), потому что они не существуют как правильные модели Loopback.

Например, возьмите объекты Customer и CustomerGroup. Клиент может принадлежать несколько CustomerGroups и CustomerGroup может иметь много клиентов, поэтому следующий JSON будет использоваться для таблицы CustomerGroupCustomer в результате объединения:

[ 
    {"CustomerGroupId": "1", "CustomerId": "1"}, 
    {"CustomerGroupId": "2", "CustomerId": "2"}, 
    {"CustomerGroupId": "1", "CustomerId": "3"} 
] 

Есть ли способ перенести эти данные с использованием методов по умолчанию или мы должны искать обходной путь?

ответ

0

Итак, я понял это! Я использовал эту функцию, чтобы automigrate моих таблиц перед:

function automigrate(connection, table, data) { 
    app.models[table].create(data, function(err, models) { 
     if (err) throw err; console.log('|- ' + table); 
    }); 
} 

Оказывается, объект приложения не знает о многих ко многим таблиц, которые генерируются с помощью источника данных, в то время как источник данные делают. Таким образом, все, что вам нужно сделать, это получить модели из объекта источника данных вместо приложения:

function automigrate(connection, table, data) { 
    connection.adapter._models[table].model.create(data, function(err, models) { 
     if (err) throw err; console.log('|- ' + table); 
    }); 
}