如何在sails JS中执行连接

时间:2015-09-15 07:26:00

标签: json sails.js sails-mongo

我有

形式的文件

挑战:

{
  "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 个答案:

答案 0 :(得分:1)

Sails中没有连接但填充。因此,您需要在模型之间建立关联并填充它们。例如:

// 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);
  }
};
相关问题