首页 > 解决方案 > 如何从表单中获取值以在 AdonisJs 中进行查询?

问题描述

我正在编写一个搜索表单以从数据库中获取一些数据,我不知道我在做什么错。页面只是刷新,没有任何反应。

1-我有一个输入名为“术语”的表单

2- 我的路线:Route.get('/telefone', 'TelefoneController.show')

我的控制器

async show ({ params, request, response, view }) {
    const term = request.input('term');

    const nome = await Telefone.query().where('atendente', 'LIKE', 
    '%'+term+'%').fetch()
    console.log(nome);

    return view.render('telefone', {
      nome: nome,

   })   
  }

我的 HTML

<div class="container d-flex">
    <form action="{{ route('/telefone')}}" method="get" class="col-sm-8">
      <div class="form-group">
        <label for="campotel">Buscar Nome</label>
        <input type="text" name="term" class="form-control" id="campotel" placeholder="Digite o nome do funcionário">
        </div>


      <button type="submit" class="btn btn-success float-right">Buscar</button>

    </form>


  </div>

DB STRUCTURE

    class TelefoneSchema extends Schema {
      up () {
        this.create('telefones', (table) => {
          table.increments()
          table.string('ramal')
          table.string('voip')
          table.string('atendente')
          table.integer('id_departamento')
          .unsigned()
          .references('id')
          .inTable('departamentos')
          .onUpdate('CASCADE')
          .onDelete('CASCADE')
          table.integer('id_polo_telefone')
          .unsigned()
          .references('id')
          .inTable('polos')
          .onUpdate('CASCADE')
          .onDelete('CASCADE')
          table.timestamps()
        })
      }

      down () {
        this.drop('telefones')
      }
    }
    module.exports = TelefoneSchema

page just refresh and nothing happens

标签: node.jsadonis.js

解决方案


我尝试站在我这边,但无法重现此案。

但我有一些信息可能会对您有所帮助:

  1. 当查询没有返回值时,结果是null. -> 确保你的数据库有值

  2. 我的测试代码(工作正常):

我的控制器:

'use strict'

const Telefone = use('App/Models/Telefone')

class TelefoneController {
    async show ({ params, request, response, view }) {
        const term = request.input('term')

        console.log(term)
        const result = await Telefone.query().where('atendente', 'like', 
        '%'+term+'%').fetch()
        const nome = result.toJSON()
        console.log(nome) // Return JSON array

        return view.render('welcome', {
          nome: nome,
       })   
    }
}

module.exports = TelefoneController

我的架构(我不使用您的所有数据):

class TelefoneSchema extends Schema {
  up () {
    this.create('telefones', (table) => {
      table.increments()
      table.string('ramal')
      table.string('voip')
      table.string('atendente')
      table.timestamps()
    })
  }

  down () {
    this.drop('telefones')
  }
}

我的观点 :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Hello Adonis</title>
</head>
<body>
<h1>Ramal : {{ nome[0].ramal }}</h1>
  <div class="container d-flex">
    <form action="{{ route('/telefone')}}" method="get" class="col-sm-8">
      <div class="form-group">
        <label for="campotel">Buscar Nome</label>
        <input type="text" name="term" class="form-control" id="campotel" placeholder="Digite o nome do funcionário">
        </div>
      <button type="submit" class="btn btn-success float-right">Buscar</button>
    </form>
  </div>
</body>
</html>

我希望它可以帮助你一点点。


推荐阅读