gpt4 book ai didi

javascript - 如何在 Sequelize 中的导入模型中创建自定义方法或函数

转载 作者:行者123 更新时间:2023-11-30 11:19:36 24 4
gpt4 key购买 nike

我完全是 Node.js 的新手。这是我在 Node 中的第一个项目。因为我在我的大部分项目中使用 Laravel,所以我熟悉 MVC( Model View Controller )。所以我浏览了关于模型的 Sequelize ORM 文档。我学习了如何为每个文件导入一个 model 并且它有效,但是当我将 custom functions 添加到 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() ,后者又会返回一个 promise。像这样

User.test = () => User.findOne().then((data) => {
console.log(data);
return data;
});

现在你可以使用User.test().then((result) => { .. } 如果你使用 promises 或者const result = await User.test(); 如果你想使用async/await

PS:这里的test函数是一个类方法

关于javascript - 如何在 Sequelize 中的导入模型中创建自定义方法或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50290821/

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