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