weixin_39847437
2021-01-12 16:04 浏览 28

求教,在master.js里面怎么调用model中的函数

DESC

require model文件不行。 用think.mongo也不行。

ENV

OS Platform:

Node.js Version:6.11.3

ThinkJS Version:3

code

我想在接收到订阅消息后执行mongo下的一个方法。或者在这里直接操作数据库也可以。

js
var Redis = require('ioredis');
var sub = new Redis();
think.app.on("appReady", function() {
  console.log('启动完成');
  sub.psubscribe('__keyevent:expired').then(function(count) {
    console.log(count)
  })
  sub.on('pmessage', function(pattern, channel, message) {
    console.log(message + '过期了');
    // let task_instance = require('./../model/task_instance')
    // task_instance.checktask(message)
    // think.mongo('task_instance').checktask(message);
  })
})

error message


TypeError: think.mongo is not a function

more description

急,在线等

该提问来源于开源项目:thinkjs/thinkjs

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答 默认 最新

  • weixin_39531688 weixin_39531688 2021-01-12 16:04

    Master 里不提供 model 操作,不应该把业务逻辑放在 master 里执行,会影响用户的请求。

    点赞 评论 复制链接分享
  • weixin_39847437 weixin_39847437 2021-01-12 16:04

    我现在需要thinkjs订阅redis的消息,根据消息来进行数据库的操作, 如果是在worker进程里订阅的话,就会有多个进程都收到消息,然后每个进程都会进行数据库操作。 这样不合常理啊。 我是这样理解的,不知道对不对。 谢谢你。

    点赞 评论 复制链接分享
  • weixin_39531688 weixin_39531688 2021-01-12 16:04

    你是只希望在一个 worker 里订阅消息? 那可以通过 think.messenger.consume 方法, https://thinkjs.org/zh-cn/doc/3.0/multi_process.html#toc-137

    点赞 评论 复制链接分享
  • weixin_39847437 weixin_39847437 2021-01-12 16:04

    成了,谢啦

    点赞 评论 复制链接分享

相关推荐