我完全是Node.js的新手。这是我在节点中的第一个项目。由于我在大多数项目中都使用Laravel,因此我熟悉MVC(模型视图控制器)。所以我浏览了关于模型的Sequelize文档。我学会了如何为每个文件导入一个模型并且它有效但是当我向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中是不可能的? 在此先感谢
答案 0 :(得分:2)
test
函数的原因不会返回任何内容,因为findOne
是异步的,并且会在findOne
完成之前返回。
您所要做的就是返回User.findOne()
,而User.test = () => User.findOne().then((data) => {
console.log(data);
return data;
});
将返回一个承诺。像这样的东西
User.test().then((result) => { .. }
现在你可以使用了
promises
如果您使用的是const result = await User.test();
或
async/await
如果您想使用test
PS:这里的class method
功能是$Interest
。