Javascript 试图通过sequelize:TypeError:_sequelize2.default.import将csv导入postgres不是一个函数

Javascript 试图通过sequelize:TypeError:_sequelize2.default.import将csv导入postgres不是一个函数,javascript,node.js,postgresql,sequelize.js,csv-import,Javascript,Node.js,Postgresql,Sequelize.js,Csv Import,所以我有一个我正在制作的裸体节点后端API。作为其连接到的数据库(postgres)的种子设定的一部分,我想从csv填充它。 我正在尝试将一个包含以下列的csv文件导入名为“cities”的postgres db 我已经为城市定义了模型和移植文件。 当我试图使我的“种子”文件用csv行填充数据库时,我得到错误: ^ TypeError: _sequelize2.default.import is not a functi

所以我有一个我正在制作的裸体节点后端API。作为其连接到的数据库(postgres)的种子设定的一部分,我想从csv填充它。 我正在尝试将一个包含以下列的csv文件导入名为“cities”的postgres db

我已经为城市定义了模型和移植文件。 当我试图使我的“种子”文件用csv行填充数据库时,我得到错误:

                                     ^

TypeError: _sequelize2.default.import is not a function
    at Object.<anonymous> (/Users/shawnelbaz/backend-coding-challenge/src/server/controllers/city.js:2:14)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at loader (/Users/shawnelbaz/backend-coding-challenge/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.<computed> [as .js] (/Users/shawnelbaz/backend-coding-challenge/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/Users/shawnelbaz/backend-coding-challenge/src/server/seeders/seed.js:4:22)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at loader (/Users/shawnelbaz/backend-coding-challenge/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.<computed> [as .js] (/Users/shawnelbaz/backend-coding-challenge/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:824:10)
    at Object.<anonymous> (/Users/shawnelbaz/backend-coding-challenge/node_modules/babel-cli/lib/_babel-node.js:154:22)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:824:10)
    at internal/main/run_main_module.js:17:11
city.js(服务)

cities.js(模型)

index.js(sequelize)

import fs from 'fs';
import csv from 'csv';
import sequelize from 'sequelize'
var adminCodeToZip = require('../controllers/city.js').adminCodeToZip;
const Cities = sequelize.import('../models/cities');


var input = fs.createReadStream('/Users/shawnelbaz/backend-coding-challenge/src/data/cities_canada-usa.tsv');
var parser = csv.parse({
    delimiter: '\t',
    columns: true
})

var transform = csv.transform(function(row) {
    var resultObj = {
        name: row['name'],
        country: row['country'],
        admin1: adminCodeToZip(row['admin1']),
        longitude: row['long'],
        latitude: row['lat'],
        population: row['population'],
    }
    console.log(resultObj);
    Cities.create(resultObj)
        .then(function() {
            console.log('Record created')
        })
        .catch(function(err) {
            console.log('Error encountered: ' + err)
        })
})

input.pipe(parser).pipe(transform)
import sequelize from 'sequelize';
const City = sequelize.import('../models/cities');

class Cities {
  static async Create(req, res) {
    const { name, country, admin1, longitude, latitude, population } = req.body
    console.log(req.body);
    return await City
      .create({
        name,
        country,
        admin1,
        longitude,
        latitude,
        population
      })
      .then(city => res.status(201).send({
        message: `Your city ${name} has been created successfully `,
        book
      }))
    }
}

function adminCodeToZip(adminCode){
    switch(adminCode){
        case '01': return 'AB';
        case '02': return 'BC';
        case '03': return 'MB';
        case '04': return 'NB';
        case '05': return 'NL';
        case '07': return 'NS';
        case '08': return 'ON';
        case '09': return 'PE';
        case '10': return 'QC';
        case '11': return 'SK';
        case '12': return 'YT';
        case '13': return 'NT';
        case '14': return 'NU';
    }
}

export {Cities, adminCodeToZip}
export default (sequelize, DataTypes) => {
  const City = sequelize.define('cities', {
    name: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    country: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    admin1: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    latitude: {
      type: DataTypes.INTEGER,
      allowNull: false,
    },
    longitude: {
      type: DataTypes.INTEGER,
      allowNull: false,
    },
    population: {
      type: DataTypes.INTEGER,
      allowNull: false,
    }
  });
  return City;
};
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};

let sequelize;
if (config.use_env_variable) {
  sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
  sequelize = new Sequelize(config.database, config.username, config.password, config);
}

fs
  .readdirSync(__dirname)
  .filter(file => {
    return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  })
  .forEach(file => {
    const model = sequelize['import'](path.join(__dirname, file));
    db[model.name] = model;
  });

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;