如何在Sequelize / Node.js中创建关联对象?

时间:2016-02-10 19:22:40

标签: node.js sequelize.js

有两种型号:

sequelize.define('Hotel', {
    id: {
      autoIncrement: true,
      type: DataTypes.INTEGER,
      primaryKey: true
    },
    latitude: {
      type: DataTypes.DOUBLE,
      allowNull: false
    },
    longitude: {
      type: DataTypes.DOUBLE,
      allowNull: false
    },
    title: {
      type: DataTypes.STRING,
      allowNull: false
    },
    description: {
      type: DataTypes.TEXT,
      allowNull: false
    },
    rating: {
      type: DataTypes.DOUBLE,
      defaultValue: 0
    },
    image: {
      type: DataTypes.STRING
    }
  }, {
    classMethods: {
      associate: function(db) {
        Hotel.hasMany(db.Comment, {
          foreignKey: 'commentable_id',
          scope: {
            commentable: 'hotel'
          }
        });
      }
    }
  });

sequelize.define('Comment', {
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true
    },
    content: {
      type: DataTypes.TEXT,
      allowNull: false
    },
    commentable: DataTypes.STRING,
    commentable_id: DataTypes.INTEGER
  });

如何为现有酒店实例创建关联的评论?例如,我尝试过:

hotel.addComment(request.models.Comment.create({content: 'content'}))

但它不起作用。请告诉我,我该如何解决?提前谢谢!

1 个答案:

答案 0 :(得分:0)

request.models.Comment.create()是异步的,换句话说,它返回一个必须填充的承诺,然后才能使用已解析的值来提供' feed' addComment方法。

所以你应该做类似

的事情
request.models.Comment.create({content: 'content'}).
then(function(comment){
  return hotel.addComment(comment);
});