续集 .js - 批量创建 - 我的 API 和数据库之间的问题

Sequelize.js - bulkCreate - Issues between my API and DB

提问人:MARQ 提问时间:11/16/2023 最后编辑:Brian Tompsett - 汤莱恩MARQ 更新时间:11/17/2023 访问量:22

问:

我正在尝试在服务器打开时从数据库中的本地 API 收取一些数据费用,但我遇到了这个问题。bulkCreate

我的模型:

const { DataTypes } = require('sequelize');

module.exports = (sequelize) => {

  sequelize.define('Country', {
    id : {
      type: DataTypes.STRING(3), //cca3
      allowNull: false,
      primaryKey : true,
      validate:{
       len: {
        args: [3, 3],
        msg: ' 3 caract.',
      },
      
      }
    },
    name: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true
    },
    flag: {
      type: DataTypes.STRING,
      allowNull: false,
      validate :{
        isIn: [[".png"]],
        isUrl: true,
      }
    },
    continent: {
      type: DataTypes.ENUM('South America', 'North America', 'Oceania', 'Asia', 'Antarctica', 'Europe', 'Africa'),
      allowNull: false,
    },
    capital: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    subregion: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    area:{
      type: DataTypes.FLOAT,
    },
    population: {
      type: DataTypes.INTEGER,
      allowNull: false,
    }
    
  });
};

在我的数据库中加载数据的代码:

const axios = require("axios");
const api = ('http://localhost:5000/countries');
const {Country} = require("../models/Country")


module.exports = async() => {
    try {
        const {data} = await axios(api);

        const countries = data.map((ct) =>({
            
            id: ct.cca3,
            name: ct.name.common,
            flag: ct.flags.svg,
            continent : ct.continents[0],
            capital: ct.capital ? ct.capital[0] : "No Capital",
            subregion: ct.subregion ? ct.subregion : "No Data",
            area : ct.area,
            population: ct.population


        }
        ));       
        console.log(countries);
          await Country.bulkCreate(countries);

    } catch (error) {
            return null;
    } 
}

检查第 24 行,该日志在控制台中显示此内容。

console

因此,此时代码可以正常工作,但是在SQL Shell的数据库中,数据不会显示。

sql shell

我期待控制台日志中显示的数据已经加载到我的数据库中,因此我可以用它来做一些有趣的事情。

PS:这就是我打开sv并尝试加载数据库的方式

const server = require("./src/server");
const { conn } = require('./src/db.js');
const loadDb = require("./src/models/loadDb.js");
const PORT = 3001;



conn.sync({ force: true }).then(() => {
server.listen(PORT, () => {
  loadDb ();
  console.log(`Server listening on port ${PORT}`);
})
}).catch(error => console.error(error))
JavaScript 数据库 续集.js

评论

0赞 Anatoly 11/17/2023
swap and lines. Also you don't wait for the result in - is it intentional?console.logbulkCreatelisten

答: 暂无答案