2017-02-24 130 views
1

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

  • 我已经确定我的数据库已填充。
  • 我测试了我的控制器中的代码,它可以正常工作并获取结果。
  • 辅助脚本启动Adonis的所有相同部分作为server.js,sans实际的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模型吗?

回答

1

这是因为您的功能是generator,您只能使用yield关键字调用生成器。

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

您可以使用包co创建根生成器功能。

+0

这个帮助。谢谢 – Ali

相关问题