ObjectionJS - 在数据层文件中分组模型
ObjectionJS - Group models in a data layer file
我有一个 NodeJS 应用 运行 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
})
知道为什么这不起作用吗?
预先感谢您的宝贵时间。
找到问题所在,我只需要在 User
的 require
中使用解构,就像这样:
/models/_main.js
// BAD
// const User = require('./user.model')
// GOOD
const { User } = require('./user.model')
module.exports = [User]
很有魅力。
解释差异的有用问题:
我有一个 NodeJS 应用 运行 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
})
知道为什么这不起作用吗? 预先感谢您的宝贵时间。
找到问题所在,我只需要在 User
的 require
中使用解构,就像这样:
/models/_main.js
// BAD
// const User = require('./user.model')
// GOOD
const { User } = require('./user.model')
module.exports = [User]
很有魅力。
解释差异的有用问题: