Javascript &引用;错误";:&引用;从'alliance'中选择*其中'alliance\u description`={}-SQLITE\u错误:没有这样的表:alliance
问题=>“错误”:“从Javascript &引用;错误";:&引用;从'alliance'中选择*其中'alliance\u description`={}-SQLITE\u错误:没有这样的表:alliance,javascript,node.js,postgresql,express,knex.js,Javascript,Node.js,Postgresql,Express,Knex.js,问题=>“错误”:“从alliancewherealliance\u description={}-SQLITE\u中选择*错误:没有这样的表:alliance” )。 GET/alliance 500 149.999毫秒-110 sqlite不支持插入默认值。设置useNullAsDefault标志以隐藏此警告。(见文件 ). GET/alliance 500 6.629 ms-110 GET/favicon.ico 404 0.703 ms-40 Knex.js配置 捏合接头 联盟财务总监
alliance
wherealliance\u description
={}-SQLITE\u中选择*错误:没有这样的表:alliance”
)。
GET/alliance 500 149.999毫秒-110
sqlite不支持插入默认值。设置useNullAsDefault
标志以隐藏此警告。(见文件
).
GET/alliance 500 6.629 ms-110
GET/favicon.ico 404 0.703 ms-40
Knex.js配置
捏合接头
联盟财务总监
联盟路由器
联盟服务
数据库查询
我希望有人能帮我解决这个问题。您从sqlite dbms中得到错误: SQLITE_错误:没有这样的表:alliance“ 当然,你的应用程序是连接到sqlite而不是postgresql server的,它在那里找不到该表 因此,请查看您的配置/连接字符串,找出您的knex应用程序从何处读取数据库连接,我解决了它:
const { default: knex } = require('knex')
const knex = require(../db/connection) // <==== ANSWER
// was missing out of the .service file
const{default:knex}=require('knex')
const knex=require(../db/连接)//
const path = require('path')
require('dotenv').config()
const {
DATABASE_URL = 'postgresql://postgres@localhost/postgres',
} = process.env
module.exports = {
development: {
client: 'postgresql',
connection: DATABASE_URL,
pool: { min: 0, max: 100 },
migrations: {
directory: path.join(__dirname, 'src', 'db', 'migrations'),
},
seeds: {
directory: path.join(__dirname, 'src', 'db', 'seeds'),
},
useNullAsDefault: true,
},
production: {
client: 'postgresql',
connection: DATABASE_URL,
pool: { min: 0, max: 100 },
migrations: {
directory: path.join(__dirname, 'src', 'db', 'migrations'),
},
seeds: {
directory: path.join(__dirname, 'src', 'db', 'seeds'),
},
useNullAsDefault: true,
},
test: {
client: 'sqlite3',
connection: {
filename: ':memory:',
},
migrations: {
directory: path.join(__dirname, 'src', 'db', 'migrations'),
},
seeds: {
directory: path.join(__dirname, 'src', 'db', 'seeds'),
},
useNullAsDefault: true,
},
}
const env = process.env.NODE_ENV || 'development'
const config = require('../../knexfile')[env]
const knex = require('knex')(config)
module.exports = knex
const service = require('./alliance.service')
const wrapper = require('../errors/asyncErrorBoundary')
const list = async (req, res, next) => {
const { alliance_description } = req.query
const data = await service.list(req.query)
if (alliance_description) {
const data = await service.list(alliance_description)
res.json({
data: alliance_description,
})
return
}
return res.json({ data })
}
function allianceExists(req, res, next) {
const allianceId = req.params.alliance_id
const foundAlliance = alliance.find(
(alliances) => alliances.id === alliance_id
)
if (foundAlliance) {
res.locals.dish = foundAlliance
return next()
}
next({
status: 404,
message: `Alliance ID ${allianceId} Doesn't Exist`,
})
}
function checkAllianceId(req, res, next) {
const allianceId = req.params.alliance_id
const id = req.body.data.id
if (allianceId !== id && id !== undefined && (id !== '') & (id !== null)) {
return next({
status: 400,
message: `Alliance ID does not match route id. Alliance: ${id}, Route: ${allianceId}`,
})
}
return next()
}
const update = async (req, res, next) => {
const { alliance_id } = req.params
const data = await service.update(alliance_id, req.body.data)
res.status(200).json({
data: data[0],
})
}
const create = async (req, res, next) => {
const newAlliance = res.locals.validAlliance
const newRes = await service.create(newAlliance)
res.status(201).json({ data: newRes[0] })
}
const show = async (req, res, next) => {
const data = await service.show()
return res.json({ data })
}
const read = async (req, res, next) => {
const alliances = res.locals.alliance
res.status(200).json({ data: alliance[0] })
}
const isValid = (req, res, next) => {
if (!req.body.data)
return next({ status: 400, message: 'No alliance selected' })
const { alliance_name, alliance_description } = req.body.data
const requiredFields = ['alliance_name', 'alliance_description']
for (const field of requiredFields) {
if (!req.body.data[field]) {
return next({ status: 400, message: `Invalid input for ${field}` })
}
}
res.locals.validAlliance = req.body.data
next()
}
const destroy = async (req, res) => {
const { alliance_id } = rq.params
const des = await service.destroy(alliance_id)
res.status(200)
}
module.exports = {
list: [wrapper(list)],
show: [wrapper(show)],
read: [wrapper(checkAllianceId), wrapper(allianceExists), wrapper(read)],
create: [wrapper(isValid), wrapper(create)],
update: [wrapper(isValid), wrapper(allianceExists), wrapper(update)],
destroy: [wrapper(destroy)],
}
const router = require('express').Router()
const controller = require('./alliance.controller')
const methodNotAllowed = require('../errors/methodNotAllowed')
router.route('/').get(controller.list).all(methodNotAllowed)
router
.route('/:allianceId')
.get(controller.list)
.post(controller.create)
.put(controller.update)
.all(methodNotAllowed)
router
.route('/:allianceId/:userId')
.get(controller.list)
.put(controller.update)
.delete(controller.destroy)
.all(methodNotAllowed)
module.exports = router
const { default: knex } = require('knex')
const listAlliancesById = (knex, allianceId) =>
knex('alliances as a').where({ 'a.alliance_id': allianceId })
const list = (alliance_description) => {
return knex('alliance')
.select('*')
.from('alliance')
.where({ alliance_description: alliance_description })
// .orderBy('alliance_id')
}
const show = () => {
return knex('alliance').select('*')
}
const read = (alliance_id) => {
return knex('alliance').select('*').where({ alliance_id: alliance_id })
}
const create = (alliance) => {
return knex('alliance').insert(alliance, '*')
}
const update = (alliance_id, updatedAlliance) => {
return knex('alliance')
.where({ alliance_id: alliance_id })
.update(updatedAlliance)
.returning('*')
}
const destroy = (alliance) => {
return knex('alliance').delete(alliance).returning('*')
}
module.exports = {
list,
show,
read,
create,
listAlliancesById,
update,
destroy,
}
const { default: knex } = require('knex')
const knex = require(../db/connection) // <==== ANSWER
// was missing out of the .service file