sequelize关键密钥是大写的响应

时间:2015-04-23 22:03:23

标签: sequelize.js

如何让Music成为'音乐?

{
  id: 4
  name: "playlist 1"
  created_at: "2015-04-21T21:43:07.000Z"
  updated_at: "2015-04-23T20:44:50.000Z"
  Music: [
    {
      id: 12
      name: "Deorro - Five Hours (Static Video) [LE7ELS]"
      video_id: "K_yBUfMGvzc"
      thumbnail: "https://i.ytimg.com/vi/K_yBUfMGvzc/default.jpg"
      created_at: "2015-04-22T21:46:21.000Z"
      updated_at: "2015-04-22T21:46:21.000Z"
      playlist_id: 4
    }
  ]
}

我的查询类似于:

.get(function (req, res) {
    db.Playlist.findAll({
      include: [db.Music]
    }).then(function (playlists) {
      if(!playlists) {
        res.status(404).json({message: 'No playlist found!'});
        return;
      }

      res.json(playlists)
    })
  })

播放列表模型:

module.exports = function(sequelize, DataType) {
  var Playlist = sequelize.define('Playlist', {
    name: DataType.STRING
  }, {
    classMethods: {
      associate: function(models) {
        Playlist.hasMany(models.Music, { foreignKey: 'playlist_id' });
      }
    },
    tableName:   'playlists',
    underscored: true
  });

  return Playlist;
};

音乐模特:

module.exports = function(sequelize, DataType) {
  var Music = sequelize.define('Music', {
    name: DataType.STRING,
    video_id:  DataType.STRING,
    thumbnail:  DataType.STRING
  }, {
    classMethods: {
      associate: function(models) {
        Music.belongsTo(models.Playlist);
      }
    },
    tableName:   'musics',
    underscored: true
  });

  return Music;
}

2 个答案:

答案 0 :(得分:5)

更改型号名称中的外壳:

sequelize.define('music', ...)

或在关联中提供as密钥:

Playlist.hasMany(Music, { as: 'music' })

答案 1 :(得分:2)

工作代码,以便于参考:

播放列表模型:

module.exports = function(sequelize, DataType) {
  var Playlist = sequelize.define('Playlist', {
    name: DataType.STRING
  }, {
    classMethods: {
      associate: function(models) {
        Playlist.hasMany(models.Music, { as: 'music', foreignKey: 'playlist_id' });
      }
    },
    tableName:   'playlists',
    underscored: true
  });

  return Playlist;
};

音乐模型:未更改

查询:

controller.route('/playlist')
  .get(function (req, res) {
    db.Playlist.findAll({
      include: [{ model: db.Music, as: 'music' }]
    }).then(function (playlists) {
      if(!playlists) {
        res.status(404).json({message: 'No playlist found!'});
        return;
      }

      res.json(playlists)
    })
  })