nodejs学习记录 sequelize hgetall 解决异步转同步
二、ioredis
https://www.cnblogs.com/JhoneLee/p/9355993.html
通过使用ioredis,可以方便的进行node对redis进行操作,包说明如下:https://www.npmjs.com/package/ioredis
通过其封装的管道操作pipeline 实现redis的事务操作
ioredis使用如下所示:
export default { port:8079, host:'xxxxx', family:4, password:'123456', retryStrategy(times){ return Math.min(times*50,2000); }, reconnectOnError(err){ if(err.message.slice(0,8) == 'READONLY'){ return true; } } } const redis = new Redis(conf);
/** * 配置store对象的get set destroy属性即可操作session对象 * 通过简单读取session.xxx 即可触发get方法,session={...} 即可触发set方法 session = null 或重置 session即可触发destroy方法 * koa-session 与 koa-session2区别在于 koa-session2支持 async/await同步操作 * koa-session2 需要extends Store才能使用 */ // koa-session配置如下 export default { async get(key, maxAge, { rolling }){ // console.log('get',key,maxAge,rolling); let res = await redis.hgetall(key).then(r=>r).catch(e=>{ {error:e} }); return res; console.log('get',res); }, async set(key, sess, maxAge, { rolling, changed }){ console.log('set',key,sess,maxAge,rolling,changed); if(changed){ let seconds = Math.floor(maxAge/1000); redis.hmset(key,sess); redis.expire(key,seconds); } }, async destroy(key){ console.log('destory',key); await redis.del(key); } } //koa-session2 class RedisStore extends Store { constructor(){ super(); } async get(key,ctx){ // console.log('get',key,maxAge,rolling); let res = await redis.hgetall(key).then(r=>r).catch(e=>{ {error:e} }); return res; } async set(session, { sid = this.getID(24), maxAge = 1000000 } = {}, ctx){ console.log('set',session.openid,maxAge,sid); let seconds = Math.floor(maxAge/1000); await redis.hmset(sid,session); await redis.expire(sid,seconds); return sid; } async destroy(key,ctx){ console.log('destory',key); await redis.del(key); } } let store = new RedisStore(); export default store;
sequelize数据库操作
https://blog.csdn.net/weixin_44665610/article/details/103138203
查询一条记录 findOne
async function get(params) { return await demo.findOne({ where:{ id:params.id } }).then(result=>{ return result }) }
更新数据update
async function name(params) { return await demo.update( { name:params.name //更新的字段 }, { where:{ id:params.id //更新哪条数据 } } ).then(result=>{ return result; }) }
操作redis数据库hgetall
https://blog.csdn.net/themagickeyjianan/article/details/90515265
function get_uinfo_inredis(uid, callback) { if (center_redis === null) { callback(Respones.SYSTEM_ERR, null); return; } var key = "bycw_center_user_uid_" + uid; center_redis.hgetall(key, function(err, data) { if (err) { callback(Respones.SYSTEM_ERR, null); return; } var uinfo = data; uinfo.uface = parseInt(uinfo.uface); uinfo.usex = parseInt(uinfo.usex); uinfo.uvip = parseInt(uinfo.uvip); uinfo.is_guest = parseInt(uinfo.is_guest); callback(Respones.OK, uinfo); }); }
client.hgetall("hash_vm", function(err, obj) { var vm_list = []; for (key in obj) { // console.dir(obj); // console.log(JSON.parse(obj[key])); vm_list.push(JSON.parse(obj[key])); } console.log(vm_list); });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix