2015-04-23 7 views
2

В разных проектах я придерживался очень простой идеи.Вызовите собственные действия с настраиваемого маршрута

Каждый раз, это то же самое. Я хочу добавить новую запись в ассоциацию, но захватить родителя без его первичного ключа.

Например, давайте API/модели/car.js модель:

module.exports = { 

    attributes: { 
    licensePlate: { 
     type: 'integer', 
     required: true, 
     unique: true 
    }, 
    locations: { 
     collection: 'location', 
     via: 'car' 
    } 
    } 
}; 

и Ан API/модели/location.js модель:

module.exports = { 

    attributes: { 
    coordinates: { 
     type: 'array', 
     required: true 
    }, 
    car: { 
     model: 'car' 
    } 
    } 
}; 

A автомобиль может иметь несколько мест, в одном месте есть один автомобиль.

Я могу добавить местоположение в автомобиле с помощью the native addTo blueprint action

POST /car/1/locations 
{"coordinates":[2.13654,50.323654]} 

Теперь, что если по какой-то причине, у меня нет доступа к идентификатору автомобиля, и чувствовать, как с помощью другого поля, как уникальный licensePlate?

В принципе, я хотел бы сделать пользовательский маршрут внутри конфигурации/маршрутов, как

POST /car/byplate/:licensePlate/locations': { 
    controller: 'Car', 
    action: 'addLocationByPlate' 
} 

Для того, чтобы иметь возможность вызвать

POST /car/byplate/AW45RE65/locations 
{"coordinates":[2.13654,50.323654]} 

А вот проблема ... открытие мой новый новый контроллер действий, я понимаю, что, несмотря на выбор моего автомобиля пластинкой, следующая логика (валидация, создание местоположения, публикация местоположения, публикация местоположения, добавление в каталог местоположений автомобилей, публикация размещения местоположения, обработка ошибок) - уже реализовано в sails.js ядро.

Так вот вопрос:

Как правильно назвать нативный действие Blueprint с настраиваемым маршрута?

ответ

0

В контроллере вы можете написать что-то вроде этого:

YourModelName.Query(data, function(err, items){ 
    if(err) return err; 

    res.json(items); 
}) 

Так, например, если вы хотите создать новый объект в модели автомобиля вы можете сделать что-то вроде этого:

Car.create({"carID": req.param("carID")}, function(err, items){ 
    if(err) return err; 

    res.json(items); 
}) 

это создаст новый объект с идентификатором, который вы отправили в качестве параметра. То же самое касается других запросов, таких как добавление, обновление, уничтожение и т. Д.

+0

Здравствуйте. Спасибо, но я сказал, что * «И вот проблема ... открытие моего нового нового контроллера действий, я понимаю, что, несмотря на выбор моей машины пластинкой, следующая логика (валидация, создание местоположения, создание местоположения publish, location add to *) –

+0

1) Вы возвращаете 200, где sails.js вернет 201. 2) Вы ничего не публикуете для публикации в блоке sails.js. но не «созданный» ни «добавленный». 3) Вы не делаете никаких валидаций. 4) Вы не обрабатываете никаких ошибок. –

+0

И я не обвиняю вас.Потому что это ** сложно **. Моя реальная проблема заключается в том, что я не хочу об этом думать, потому что она уже реализована ** в sails.js =>, поэтому я использую фреймворк –

 Смежные вопросы

  • Нет связанных вопросов^_^