Strapi 为什么我的findOne查询无限期挂起?

Strapi 为什么我的findOne查询无限期挂起?,strapi,Strapi,我刚刚用创建strapi应用程序创建了一个测试模型生命周期方法的程序。我正在做一个写一次读多字段,名为number\u of\u site\u lessons。 我希望有一个字段,用户可以在其中指定创建现场课程时应生成多少在线课程,然后禁用该字段,或者在尝试更改其值时至少抛出一个错误 为此,我编写了OnsiteCourse的生命周期方法: //在更新值之前。 //在“更新”查询之前激发。 更新前:异步(模型、属性、选项)=>{ const prev=wait strapi.query(“现场课程

我刚刚用
创建strapi应用程序创建了一个测试模型生命周期方法的程序。我正在做一个写一次读多字段,名为
number\u of\u site\u lessons
。 我希望有一个字段,用户可以在其中指定创建现场课程时应生成多少在线课程,然后禁用该字段,或者在尝试更改其值时至少抛出一个错误

为此,我编写了OnsiteCourse的生命周期方法:

//在更新值之前。
//在“更新”查询之前激发。
更新前:异步(模型、属性、选项)=>{
const prev=wait strapi.query(“现场课程”).findOne({u id:model.id});
控制台日志(上一个,型号);
if(上一个现场课程的数量!=模型现场课程的数量){
抛出新错误(“无法更改课程数量-请删除或创建现场课程。”)
}
if(上一个现场项目的数量!=现场项目的型号数量){
抛出新错误(“无法更改项目数-请删除或创建现场项目。”)
}
},
当我更新OnsiteCourse实体时,代码会运行,但它会在
wait strapi.query(“现场课程”).findOne({…})
处停止,然后无限期挂起。我没有收到错误,下一行也没有收到console.log

一段时间后,控制台中会显示此错误:

[2020-03-17T07:42:30.558Z] error TimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
    at Bluebird.try.then.catch (/home/teri/projects/strapi/new/node_modules/knex/lib/client.js:318:17)
    at tryCatcher (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/util.js:16:23)
    at /home/teri/projects/strapi/new/node_modules/bluebird/js/release/catch_filter.js:17:41
    at tryCatcher (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/promise.js:725:18)
    at _drainQueueStep (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/async.js:93:12)
    at _drainQueue (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/async.js:86:9)
    at Async._drainQueues (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/home/teri/projects/strapi/new/node_modules/bluebird/js/release/async.js:15:14)
    at processImmediate (internal/timers.js:443:21)

我使用
sqlite
连接器(使用
3.0.0-beta.20
)也遇到了同样的问题

//尝试使用beforeCreate、beforeUpdate和beforeSave
wait strapi.query(“product”).findOne({id:1})
等待strapi.api.product.services.product.findOne({id:1})
等待strapi.api.product.controllers.product.findOne({params:{id:1}})
wait strapi.services.product.findOne({id:1})

通过使用
mongodb
mysql
和其他工具也可以!)

您可以分享您的
现场课程
内容类型吗。@JimLAURIE我链接了包含问题所有内容的git存储库。您也可以在这里找到它:好的,您可以尝试使用camelCase内容类型,我认为这会有所帮助。