Миграция с dynamodb (dynamoose) на postgresql (продолжение) — установка хэш-ключа

#node.js #postgresql #amazon-dynamodb #sequelize.js #dynamoose

#node.js #postgresql #amazon-dynamodb #sequelize.js #dynamoose

Вопрос:

Я создал простую модель, используя dynamoose, и теперь я хочу перенести ее в postgresql, используя sequelize. Я знаком с dynamodb и с тем, как в нем устанавливаются хэш-ключи и ключи диапазона, но как мне выполнить то же самое в postgresql с помощью sequelize? Ниже приведена моя предыдущая модель с использованием 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;
  

Пытаюсь перенести его с помощью sequelize:

 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;
  

Пожалуйста, дайте мне знать, правильно ли это и как я могу установить соответствующие hashKeys и rangeKeys с помощью sequelize. Спасибо.

Ответ №1:

Я нахожусь в процессе выполнения чего-то подобного с TypeORM, но мне кажется, что для продолжения ассоциаций вам просто нужно установить внешний ключ, вот так:

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