2015-03-16 1 views
1

У меня есть список категорий и список мест, каждое место имеет категорию во внешнем ключе.Как проверить внешний ключ в Strongloop?

categorie.json: http://pastebin.com/ttumKPf9

place.json: http://pastebin.com/J4bdEiUx

Я стараюсь, чтобы проверить, если категория идентификатор существует. Для этого я переопределяю метод create на месте класса. На месте класса I выполняется поиск, если идентификатор категории присутствует в категории. Если я найду его, я вызову метод upsert для вставки данных на место. Но этот метод вызова метода upsert вызывает метод создания ... Если я не вызываю метод upsert, данные не вставляются. Как проверить и вставить данные в strongloop?

script.js:

module.exports = function(app){ 

var Place = app.models.place; 
var Categorie = app.models.categorie; 

Place.create = function(data,callback){ 
    console.log("avant find"); 

    console.log(data.id); 

    Categorie.findById(data.categorieId, function(err, instance){ 
     console.log("find") 

     if(err){ 
     throw err; 
     } 
     if(instance == null){ 
     new err; 
     throw err; 
     } 

     console.log("Upsert"); 
     Place.upsert(data, callback); 
    }); 
}; 
}; 

ответ

1

Вы должны переопределить метод удаленного, а не метод ORM.

Другой подход, если вы используете реляционную БД, создаете ограничения внешнего ключа.

Вот SQL-запрос, где place и categorie являются табличные имена: ALTER TABLE place ADD CONSTRAINT Categorie_places_ix FOREIGN KEY (categorieId) REFERENCES categorie(id) ON DELETE SET NULL;

+0

Я стараюсь, но внешний ключ не подтвердит Strongloop. Как я могу использовать отношение belongsTo? –

+0

Создайте hasMany-отношение, и это откроет конечные точки, например 'POST:/api/category /: id/place'. Это то, что вам нужно? Также вы можете выполнять необработанные команды SQL непосредственно или в разделе загрузки самостоятельно (я могу привести несколько примеров). – IvanZh

+0

принадлежит к тому, чтобы вы могли получить категорию, которая владеет 'place'. – IvanZh