【问题标题】:Using Lucid outside of AdonisJS controller在 AdonisJS 控制器之外使用 Lucid
【发布时间】:2017-02-24 21:42:10
【问题描述】:

我正在使用 AdonisJS 构建一个项目,我想将它构建为一个模块化的两部分应用程序:AdonisJS 服务器运行一个控制面板,而该服务器外部的自定义脚本运行一个 IRC 机器人。我一直在尝试将 Lucid 加载到第二个脚本中,以便与我的数据库进行交互,但它只返回一个空对象 {}。需要注意的几点:

  • 我已确保我的数据库已填充。
  • 我已经在我的控制器中测试了可以正常工作并按预期获取结果的代码。
  • 辅助脚本启动 Adonis 的所有与 server.js 相同的部分,没有实际的 HTTP 服务器。
  • 我已尝试将此脚本附加到 HTTP 服务器,但没有任何区别。
  • 我还尝试创建具有相同结果的原始 QueryBuilder 对象。

以下是我可以汇总的最少代码示例:

#!/usr/bin/node
'use strict'

const fs = require('fs')
const bootstrap = require('./bootstrap/bot')

bootstrap(() =>
{
    const AppConfig = use('AppConfig')
    const Settings = use('App/Model/Settings')

    const get_settings = function * () {
        yield Settings.all()
    }

    console.log(get_settings())
})

console.log() 打印 {},即使在控制器中调用的相同代码打印设置表中的所有条目。 bootstrap/bot.js 几乎是 bootstrap/http.js 的精确复制品。唯一的区别是它不启动 HTTP 服务器。

我已经搜索了源代码,寻找在启动服务器和运行控制器代码之间可能发生的事情,看看是否有一些我遗漏的关键信息,但我迷路了。

有人知道我如何在 AdonisJS 控制器的范围之外使用我的 Lucid 模型吗?

【问题讨论】:

    标签: node.js adonis.js


    【解决方案1】:

    因为你的函数是generator,你只能用yield关键字调用生成器。

    所以你的console.log() 应该看起来像console.log(yield get_settings())

    您可以使用包co 来创建根生成器函数。

    bootstrap(co(function * () {
      // ...
    }))
    

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      相关资源
      最近更新 更多