Связанная функция данных .createData () возвращает неопределенное значение в Sequelize. Как я это называю неправильно? - PullRequest
0 голосов
/ 08 апреля 2020

Это моя функция, которую я создал (все еще пытаюсь ее реорганизовать, извините за беспорядок) .then ((CountryData) => CountryData.createData ({Однако я создал связь между CountryData и DataPoint когда я пытаюсь запустить скрипт на самом деле, он выдает ошибку

.then((CountryData) =>
      CountryData.createData({

Я не могу понять, что я делаю неправильно. Мне очень трудно понять документацию Sequelize, когда дело доходит до этого

Вот мой сценарий:

import axios from 'axios';
import { models } from '../models/index';
var async = require('async');

const processData = ({
  CountryCode,
  Country,
  Province = '',
  CityCode = '',
  City = '',
  Lat,
  Lon,
  LocationID,
  Confirmed,
  Deaths,
  Recovered,
  Active,
  Date,
}) => {
  models.CountryData.findOrCreate({
    defaults: {
      CountryCode,
      Country,
      Province,
      CityCode,
      City,
      Lat,
      Lon,
      LocationID,
    },
    where: { LocationID: LocationID },
  })
    .then((CountryData) =>
      CountryData.createData({
        CountryCode,
        Confirmed,
        Deaths,
        Recovered,
        Active,
        LocationID,
        DateOfStat: Date,
      }),
    )
    .catch((err) => console.log(err));
};

Вот моя модель страны

const country = (sequelize, DataTypes) => {
  const CountryData = sequelize.define('country', {
    Country: {
      type: DataTypes.STRING,
    },
    CountryCode: {
      type: DataTypes.STRING,
    },
    Province: {
      type: DataTypes.STRING,
    },
    City: {
      type: DataTypes.STRING,
    },
    CityCode: {
      type: DataTypes.STRING,
    },
    Lat: {
      type: DataTypes.STRING,
    },
    Lon: {
      type: DataTypes.STRING,
    },
    LocationID: {
      type: DataTypes.STRING,
      unique: true,
    },
    DataIDs: {
      type: DataTypes.INTEGER,
    },
  });
  CountryData.associate = (models) => {
    CountryData.hasMany(models.DailyData, {
      foreignKey: {
        name: 'DataIDs',
      },
      as: 'data',
      onDelete: 'CASCADE',
    });
  };
  return CountryData;
};
export default country;

Вот моя модель dailydata

const dailyData = (sequelize, DataTypes) => {
  const DailyData = sequelize.define('dailyData', {
    CountryCode: {
      type: DataTypes.STRING,
    },
    LocationID: {
      type: DataTypes.STRING,
    },
    Confirmed: {
      type: DataTypes.INTEGER,
    },
    Deaths: {
      type: DataTypes.INTEGER,
    },
    Recovered: {
      type: DataTypes.INTEGER,
    },
    Active: {
      type: DataTypes.INTEGER,
    },
    DateOfStat: {
      type: DataTypes.DATE,
    },
    CountryID: {
      type: DataTypes.INTEGER,
    },
  });
  DailyData.associate = (models) => {
    DailyData.belongsTo(models.CountryData, {
      foreignKey: {
        name: 'CountryID',
      },
      as: 'country',
    });
  };
  return DailyData;
};
export default dailyData;

Вот модель индекса

import Sequelize from 'sequelize';
import 'dotenv/config';
const sequelize = new Sequelize(
  process.env.DATABASE,
  process.env.DATABASE_USER,
  process.env.DATABASE_PASSWORD,
  {
    dialect: 'postgres',
  },
);
const models = {
  CountryData: sequelize.import('./country'),
  DailyData: sequelize.import('./dailyData'),
};
Object.keys(models).forEach((key) => {
  if ('associate' in models[key]) {
    models[key].associate(models);
  }
});
export { sequelize, models };

Извините за длинный код. Я бы пропустил некоторые, но на данный момент я понятия не имею, что я делаю не так. Кроме того, какие рекомендации я могу получить, чтобы получить лучший gr asp при секвелировании?

Заранее большое спасибо.

...