gpt4 book ai didi

node.js - sequelize 中的 DataType 有什么作用?为什么在参数中传递它并在没有定义它的情况下运行?

转载 作者:行者123 更新时间:2023-12-03 22:27:48 28 4
gpt4 key购买 nike

我看过这个教程,但有几件事我不明白。

教程的链接是https://www.youtube.com/watch?v=xZMwg5z5VGk&t=872s

这将创建模型

module.exports = (sequelize, DataTypes) => 
sequelize.define('User', {

email:{
type: DataTypes.STRING,
unique: true
},
password: DataTypes.STRING
})

//这会导入模型
const fs = require('fs')
const path = require('path')
const Sequelize = require('sequelize')
const config = require('../config/config')

const db = {}
var a = ''

const sequelize = new Sequelize(
config.db.database,
config.db.user,
config.db.password,
config.db.options
)

fs
.readdirSync(__dirname)
.filter((file) =>
file !== 'index.js'
).forEach((file) =>
{

const model = sequelize.import(path.join(__dirname, file))
db[model.name] = model

})

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


module.exports = db;

数据类型从何而来?
它不是从模块中导入的
为什么我需要将它作为参数传递?

而且我也无法理解这些线条
const model = sequelize.import(path.join(__dirname, file))
db[model.name] = model

最佳答案

当我们打电话

var model = sequelize['import'](path.join(__dirname, file));

一个 import sequelize 的函数在加载模型的地方被调用。可以看代码 here

代码显示 this.importCache[path] = defineCall(this, DataTypes); ,所以我们知道它是如何得到 DataTypes
如果您查看调用堆栈并将断点放在 sequelize.define,您还可以验证和了解更多信息。或更好的 const model = sequelize.import(path.join(__dirname, file))并开始深入挖掘。下面是调用堆栈的样子的快照

call stack

关于node.js - sequelize 中的 DataType 有什么作用?为什么在参数中传递它并在没有定义它的情况下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50032230/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com