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
where
alliance\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