Javascript Sequelize.define无法将可选对象合并到模型构造函数中

Javascript Sequelize.define无法将可选对象合并到模型构造函数中,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我在嘲笑一个简单的消息服务bulit,它带有express和sequelize.js以及 尝试使用sequelize.define(“Model”、Desc、Opt)语法。 但是,无法为模型对象加载Opt参数中的其他类方法。 你有没有想过让这些对象有额外的方法,用optjson指定?(在下面的示例中命名为关联公司) 我使用了节点v10.16.0和sequelize@5.21.3. 参考: 我的代码和相应的错误消息: const Messages=sequelize.define(“消息”{ 身份

我在嘲笑一个简单的消息服务bulit,它带有express和sequelize.js以及 尝试使用sequelize.define(“Model”、Desc、Opt)语法。 但是,无法为模型对象加载Opt参数中的其他类方法。 你有没有想过让这些对象有额外的方法,用optjson指定?(在下面的示例中命名为关联公司

我使用了节点v10.16.0和sequelize@5.21.3.

参考:

我的代码和相应的错误消息:

const Messages=sequelize.define(“消息”{
身份证:{
类型:DataType.INTEGER,
primaryKey:没错,
自动递增:真
},
地点:{
类型:DataType.STRING,
allowNull:错,
验证:{
注:对
}
},
信息:{
类型:DataType.STRING,
allowNull:错,
defaultValue:false
}
}, {
分类方法:{
助理:(模特)=>{
Messages.belongsTo(models.Users);
}
}
});
console.log(消息类型);
控制台日志(消息);
console.log(Messages.associate的类型);
console.log(Messages.associate);
>app1@1.0.0start/home/neko/PJDir/app1
>node app.js
交付v0.1.6,在/home/neko/PJDir/app1中初始化
+./libs/config.js
+./db.js
+./models/messages.js
+./models/users.js
+./libs/middleware.js
+./routes/index.js
+/routes/message.js
+./libs/boot.js
功能
信息
未定义
未定义
/home/neko/PJDir/app1/db.js:34
db.models[key].关联(db.models);
^
TypeError:db.models[key]。关联不是函数
在Object.keys.forEach.key(/home/neko/PJDir/app1/db.js:34:22)
在Array.forEach()处
在Function.module.exports.app(/home/neko/PJDir/app1/db.js:32:28)
在commission.into(/home/neko/PJDir/app1/node_modules/commission/lib/commission.js:240:17)
反对。(/home/neko/PJDir/app1/app.js:12:4)
at模块编译(内部/modules/cjs/loader.js:776:30)
在Object.Module._extensions..js(internal/modules/cjs/loader.js:787:10)
at Module.load(内部/modules/cjs/loader.js:653:32)
在tryModuleLoad(内部/modules/cjs/loader.js:593:12)
at Function.Module._load(内部/modules/cjs/loader.js:585:3)
位于Function.Module.runMain(internal/modules/cjs/loader.js:829:12)
启动时(内部/bootstrap/node.js:283:19)
在bootstrapNodeJSCore(internal/bootstrap/node.js:622:3)
npm错误!代码失效循环
npm错误!错误1
npm错误!app1@1.0.0start:`node app.js`
npm错误!退出状态1
npm错误!
npm错误!失败app1@1.0.0开始脚本。
npm错误!这可能不是npm的问题。上面可能还有其他日志输出。

试试这样的方法

const Messages = sequelize.define('Messages', {
  id: {
    type: DataType.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  place: {
    type: DataType.STRING,
    allowNull: false,
    validate: {
      notEmpty: true
    }
  },
  message: {
    type: DataType.STRING,
    allowNull: false,
    defaultValue: false
  }
}, {
  tableName: 'messages'
})

Messages.associate = function (models) {
  Messages.belongsTo(models.Users);
  Messages.hasMany(/* other relations */);
}

试试这样的

const Messages = sequelize.define('Messages', {
  id: {
    type: DataType.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  place: {
    type: DataType.STRING,
    allowNull: false,
    validate: {
      notEmpty: true
    }
  },
  message: {
    type: DataType.STRING,
    allowNull: false,
    defaultValue: false
  }
}, {
  tableName: 'messages'
})

Messages.associate = function (models) {
  Messages.belongsTo(models.Users);
  Messages.hasMany(/* other relations */);
}

谢谢,但在这里,node说
TypeError:defineCall不是一个函数
,并使用sequelize内部错误中止(/home/neko/PJDir/api2/node\u modules/sequelize/lib/sequelize.js:486)。您没有在我使用的项目中导入Uses模型
sequelize.import(path.join(\u dirname,fileName))
然后我使用
Object.keys(models).forEach(modelName=>{if(models[modelName].associate){models[modelName].associate(models)}将其分配给模型
请与您分享用户模型详细信息以及正在使用的父函数或父类方法。实际上,正确的函数是belongsTo而不是belongsTo。我正在更新上述答案中的代码。抱歉,我在前面的评论中尝试了错误的目录,但是,在正确的PJ目录中,node也中止了
TypeError:Messages.belongTo不是一个函数(/code>)(范围错误?)是的,我关闭了它。谢谢,但在这里,node说
TypeError:defineCall不是一个函数
并中止了sequelize内部错误(/home/neko/PJDir/api2/node\u modules/sequelize/lib/sequelize.js:486)。您没有在我的项目中导入Uses模型,我使用了
sequelize.import(path.join(\uu dirname,fileName))
,然后我使用
Object.keys(models).forEach(modelName=>{if(models[modelName].associate){models[modelName].associate(models)}将其分配给模型)
请与您分享用户模型详细信息以及正在使用的父函数或父类方法。实际上,正确的函数是belongsTo而不是belongsTo。我正在更新上述答案中的代码。抱歉,我在前面的评论中尝试了错误的目录,但是,在正确的PJ目录中,节点也中止了
TypeError:Messages.belongTo不是一个函数
:(范围错误?)是的,我关闭了它。