请需要您的帮助。为什么我在昵称对象中收到 String(150) 的奇怪错误?
const Sequelize = require('sequelize');
const devOptions = require('./../config/config').connectionConf.development;
const sequelize = new Sequelize(
devOptions.database,
devOptions.username,
devOptions.password,
{
host: devOptions.host,
dialect: devOptions.dialect
}
);
const User = sequelize.define('user', {
user_id: {
primaryKey:true,
type:sequelize.BIGINT,
allowNull:false
},
nickname: {
type:sequelize.STRING(150),
unique:true,
allowNull:false
},
email: {
type:sequelize.STRING(150),
unique:true,
allowNull:false
},
user_password: {
type:sequelize.STRING(150),
unique:true,
allowNull:false
},
created_at: {
type:sequelize.Date,
created_time:sequelize.NOW,
allowNull:false
},
updated_at: {
type:sequelize.Date,
allowNull:false
}
}, {});
类型错误:sequelize.STRING 不是 Object 的函数。(E:\Projects\JavaScript\couponsystem\src\models\schema.js:21:22) 在 Module._compile (internal/modules/cjs/loader.js:688:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:12) ) at Function.Module._load (internal/modules/cjs/loader.js:529:3) at Module.require (internal/modules/cjs/loader.js:636:17) at require (internal/modules/cjs/ helpers.js:20:18) 在对象。(E:\Projects\JavaScript\couponsystem\src\models\generator.js:1:78) 在 Module._compile (internal/modules/cjs/loader.js:688:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10) at Module.load (internal/modules/cjs/loader.js:598:32) at tryModuleLoad (internal/modules/cjs/loader.js:537:
由于无法使用 访问数据类型这一事实引起了我的兴趣sequelize
,因此我开始查看模块的主类。
当您这样做时,const Sequelize = require('sequelize');
您正在调用一个扩展数据类型的接口(它们也是一个接口),因此您可以毫无问题地使用 BIGINT 或 STRING。
但是当你这样做时
const sequelize = new Sequelize(
devOptions.database,
devOptions.username,
devOptions.password,
{
host: devOptions.host,
dialect: devOptions.dialect
}
);
您指的是上述接口的构造函数(构造签名)。这导致其中的对象是sequelize
另一个类或函数的实例,而不是对 的直接引用Sequelize
,这就是它们具有不同属性的原因。
总之,这将是执行您请求的代码实现的正确方法。
const Sequelize = require('sequelize');
const devOptions = require('./../config/config').connectionConf.development;
const sequelize = new Sequelize(
devOptions.database,
devOptions.username,
devOptions.password,
{
host: devOptions.host,
dialect: devOptions.dialect
}
);
const User = sequelize.define('user', {
user_id: {
primaryKey: true,
type: Sequelize.BIGINT,
allowNull: false
},
nickname: {
type: Sequelize.STRING(150),
unique: true,
allowNull: false
},
email: {
type: Sequelize.STRING(150),
unique: true,
allowNull: false
},
user_password: {
type: Sequelize.STRING(150),
unique: true,
allowNull: false
},
created_at: {
type: Sequelize.Date,
created_time: Sequelize.NOW,
allowNull: false
},
updated_at: {
type: Sequelize.Date,
allowNull: false
}
}, {});
接口中的构造签名不能在类中实现;它们仅用于定义定义“新”功能的现有 JS API。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句