![](/img/trans.png)
[英]Sequelize - Use set, add, create methods in models with belongs To Many associations
[英]How to create custom methods or functions inside imported models in Sequelize
我完全是Node.js
的新手。 这是我在node中的第一个项目。 由于我在大多数项目中使用Laravel,所以我对MVC(模型视图控制器)很熟悉。 因此,我浏览了有关模型的Sequelize ORM
文档。 我学习了如何为每个文件导入一个model
,并且该model
可以工作,但是当我向User
模型添加自定义函数时 ,该函数可以正常工作,但不返回任何内容。
这是我的数据库文件
const fs = require('fs');
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database_name', 'userName', 'password', {
host: 'localhost',
dialect: 'mysql',
operatorsAliases: false,
logging:false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
// SQLite only
//storage: 'path/to/database.sqlite'
});
sequelize.import('./../models/User.js');
var db=sequelize.models;
module.exports={db,connectionCheck};
这是用户模型的代码
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define('User', {},{
timestamps: false,
freezeTableName:true,
tableName:'agent_info'
});
/*This is the custom function that I added*/
User.test = function(){
User.findOne().then(data =>{
console.log(data);
return data;
});
};
return User;
};
最后是路由文件的代码
app.get('/',(req,res,next) =>{
var temp=db.User.test();
console.log(temp);
});
在这里,我正在调用user.test()
函数(自定义模型函数),该函数似乎按预期运行,但未返回任何内容。 所以我做错什么了吗,还是在Sequelize中不可能? 提前致谢
原因test
函数不返回任何内容,因为findOne
是异步的,并且返回将在findOne
完成之前发生。
您所需要做的就是返回User.findOne()
,而User.findOne()
会返回一个User.findOne()
。 像这样
User.test = () => User.findOne().then((data) => {
console.log(data);
return data;
});
现在,如果您使用promises
或const result = await User.test();
则可以使用User.test().then((result) => { .. }
const result = await User.test();
如果要使用async/await
const result = await User.test();
则可以使用const result = await User.test();
PS:这里的test
功能是一个class method
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.