从dynamodb(dynamoose)迁移到postgresql(sequelize)-设置hashKey

时间:2019-04-03 04:11:32

标签: node.js postgresql amazon-dynamodb sequelize.js dynamoose

我使用dynamoose创建了一个简单的模型,现在我想使用sequelize将其迁移到postgresql中。我熟悉dynamodb以及如何在其中设置哈希键和范围键,但是如何使用sequelize在postgresql中完成相同的工作?以下是我先前使用dynamoose的模型,以及我尝试使用sequelize进行迁移的方法,但是我不确定如何处理按键:

//dynamoose
var dynamoose = require("dynamoose");

var MessageRatingSchema = new dynamoose.Schema({
  id: {
    type: String,
    index: {
      global: true
    }
  },
  chatId: {
    type: String,
    hashKey: true
  },
  ratingType: {
    type: String,
    enum: ["NEGATIVE", "POSITIVE", "NEUTRAL", "MIXED"],
    rangeKey: true
  },
  rating: {
    type: Number
  }
});

module.exports = MessageRatingSchema;

尝试使用续集进行迁移:

const Sequelize = require("sequelize");
const sequelize = new Sequelize('PGDATABASE', 'PGUSER', 'PGPASS', {
    host: 'localhost',
    dialect: 'postgres'
  });

  const MessageRating = sequelize.define('MessageRating', {
    id: {
      type: Sequelize.STRING,
      primaryKey: true
    },
    chatId: {
      type: Sequelize.STRING
      //hashkey
    },
    ratingType: {
        type: Sequelize.STRING,
        enum: ["NEGATIVE", "POSITIVE", "NEUTRAL", "MIXED"]
        //sortkey
    },
    rating:{
        type: Sequelize.NUMBER
    }

  }, {
    // options
  });

  module.exports = MessageRating;

请告诉我这是否正确,以及如何使用sequelize设置相应的hashKeys和rangeKeys。谢谢。

1 个答案:

答案 0 :(得分:0)

我正在使用TypeORM做类似的事情,但是对于Sequelize Associations来说,您只需要设置外键,就像这样:

 chatId: {
    type: Sequelize.STRING,
    references: {
      model: Chat,
      key: 'id'
    }
  }