如何查询Node / Postgres中的关联模型

时间:2018-04-12 07:11:04

标签: node.js postgresql sequelize.js

我正在快递中构建应用程序,我使用postgres和sequelize for ORM。我有两个模型,UserPost

在我的user.jspost.js个文件中:

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('users', {
    id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      autoIncrement: true
    },
    name: {
      type: DataTypes.STRING,
      allowNull: false,
      defaultValue: ""
    },

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('posts', {
    id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      autoIncrement: true
    },
    user_id: {
      type: DataTypes.INTEGER,
      allowNull: true
    },
    title: {
      type: DataTypes.STRING,
      allowNull: false,
      defaultValue: ""
    },

我导入了这两个模型,并且我做了以下关联:

User.hasMany(Post, { foreignKey: 'user_id' });

Post.belongsTo(User, { foreignKey: 'user_id' });

我正在尝试渲染用户完成的所有帖子,但我可能遗漏了一些内容。

在我的路线中,我可以得到正确的用户,但我不知道如何继续。

router.route('/:id').get(async (req, res) => {
  const user = await User.findById(req.params.id);
  console.log(user);
  res.send(user);
})

谢谢!

1 个答案:

答案 0 :(得分:0)

findById 不支持关联的模型,

User.findById(req.params.id);

您可以将findById更改为findOne并包含此类型的模型,

User.findOne({
    where : { id : req.params.id },
    include : {
        model : Post
    }
});