node.js - ObjectionJS - 在数据层文件中分组模型
问题描述
fastify
我有一个运行fastify-objectionjs
.
为了整洁,我想将所有模型分组到一个名为 的文件中,在该文件中导出文件夹_main.js
内的模型数组。models
由于 fastify-objectionjs 注册需要一个模型数组,我想我可以从我的导入数组_main.js
并将其原样提供给注册函数。
但是 ObjectionJS 告诉我提供的模型无效。
/app.js(节点入口点)
const fastify = require('fastify')({
logger: true
})
const knexConfig = require('./knexfile')
const dataLayer = require('./models/_main')
fastify.register(require('fastify-objectionjs'), {
knexConfig: knexConfig,
models: dataLayer
})
// Also tried:
// fastify.register(require('fastify-objectionjs'), {
// knexConfig: knexConfig,
// models: [dataLayer]
// })
/models/_main.js
const User = require('./user.model')
var dataLayer = [User]
module.exports = dataLayer
// Also tried without var:
// module.exports = {
// dataLayer: [
// User
// ]
// }
/models/user.model.js
const Knex = require('knex')
const connection = require('../knexfile')
const { Model } = require('objection')
const knexConnection = Knex(connection)
Model.knex(knexConnection)
class User extends Model {
static get tableName () {
return 'users'
}
}
module.exports = { User }
我似乎在文件流中找不到问题,但如果我动态创建模型数组,应用程序会顺利启动:
/app.js(节点入口点)
const fastify = require('fastify')({
logger: true
})
const knexConfig = require('./knexfile')
const User = require('./models/user.model') // changed
fastify.register(require('fastify-objectionjs'), {
knexConfig: knexConfig,
models: [User] // changed
})
知道为什么这不起作用吗?在此先感谢您的时间。
解决方案
Found the gotcha, I just needed to use destructuring in the require
of User
, like this:
/models/_main.js
// BAD
// const User = require('./user.model')
// GOOD
const { User } = require('./user.model')
module.exports = [User]
Works like a charm.
Useful question that explains the difference: Curly brackets (braces) in node require statement
推荐阅读
- php - PHP的垃圾收集器不起作用?
- python - 最大刻度数和滚动 X
- python - 在函数图中添加箭头以显示其方向
- amazon-web-services - 我可以在 AWS 中将弹性 IP 与 Cloudfront 一起使用吗?
- sonata-admin - Sonata Block Bundle 编辑表单不保存 EntityType
- android - 混合版本会导致 Firebase 中的运行时崩溃?
- r - 无法使用功能在 R 中发送电子邮件
- javascript - 在将值从数据表存储到变量时,它要么说服务器端未定义,要么变量未定义
- java - Jhipster Prod 构建失败以及未找到 Cloudfoundry 错误
- linux - 定期运行 shelll 脚本或运行 raspbian 的树莓派 3