gpt4 book ai didi

node.js - 在 AdonisJS Controller 之外使用 Lucid

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:48 26 4
gpt4 key购买 nike

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

  • 我已确保我的数据库已填充。
  • 我已经在 Controller 中测试了代码,该代码可以正常工作并按预期获取结果。
  • 辅助脚本启动 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() 会打印 {},即使在 Controller 中调用的相同代码会打印设置表中的所有条目。 bootstrap/bot.js 几乎是 bootstrap/http.js 的精确复制品。唯一的区别是它不启动 HTTP 服务器。

我已经搜索了源代码,寻找启动服务器和运行 Controller 代码之间可能发生的事情,看看是否缺少一些关键的东西,但我迷失了。

有谁知道如何在 AdonisJS Controller 的范围之外使用我的 Lucid 模型?

最佳答案

这是因为你的函数是 generator并且您只能使用 yield 关键字调用生成器。

因此,您的 console.log() 应该类似于 console.log(yield get_settings())

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

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

关于node.js - 在 AdonisJS Controller 之外使用 Lucid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42448779/

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