2015-09-15 2 views
0

У меня есть документы видаКак выполнить объединение в парусах JS

Задача:

{ 
    "name": "challenge by abdul", 
    "created_user_id": "1", 
    "game_id": "123", 
    "platform_id": "9857", 
    "amount": 30 

} 

game: 
{ 
    "_id": "auto_generated", 
    "name": "NFS", 
    "version": "3", 
} 



platform: 
{ 
    "_id": "auto_generated", 
    "name": "ps2", 
    "version": "sami" 
} 

Я хочу выполнить запрос с соединением в парусах и хочу привести ниже формат

{ 
    "name": "challenge by abdul", 
    "created_user_id": "1", 
    "game_id": "123", 
    "game_name":"NFS", 
    "platform_name": "ps2", 
    "platform_id": "9857", 
    "amount": 30 

} 
+1

Вы читали документацию парусами на [модели] (http://sailsjs.org/documentation/concepts/models-and-orm), в частности раздел [ассоциации] (http://sailsjs.org/documentation/concepts/models-and-orm/associations)? Используя ORM, вы обычно не получаете объект, подобный тому, который вы описываете, но вы получите объект модели «Challenge» с свойствами 'game',' platform' и, возможно, 'user', которые сами объекты, содержащие нужную вам информацию. Взгляните на документы и посмотрите, есть ли у вас вопросы о том, как формировать ваши модели и запросы. – sgress454

ответ

1

В Парусах нет соединения, но заполняется. Поэтому вам нужно создать ассоциации между моделями и заполнить их. Пример:

// api/models/Platform.js 
module.exports = { 
    attributes: { 
    name: { 
     type: 'string' 
    }, 

    version: { 
     type: 'string' 
    }, 

    game: { 
     model: 'Game', 
     via: 'platform' 
    } 
    } 
}; 

// api/models/Game.js 
module.exports = { 
    attributes: { 
    name: { 
     type: 'string' 
    }, 

    version: { 
     type: 'string' 
    }, 

    platform: { 
     model: 'Platform', 
     via: 'game' 
    } 
    } 
}; 

Вы можете написать следующий код затем:

// api/controllers/AnyController.js 
module.exports = { 
    index: function(req, res) { 
    Game 
     .findOne({name: 'MY_GAME'}) 
     .populate('platform') 
     .then(function(game) { 
     console.log(game); // Game model 
     console.log(game.platform); // Platform model 
     return game; 
     }) 
     .then(res.ok) 
     .catch(res.negotiate); 
    } 
}; 
+0

Мне нужно запросить модель вызова – rash111

+0

Это пример «Как объединить модели в одном». Вы сами можете подгонять пример к вашим потребностям. – ghaiklor

+0

Я хочу написать, где условие заполняется из результата игры, например .populate ('platform', {where: {id: game_id}}), правильно? – rash111

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