实现搜索功能节点JS / MySQL

时间:2017-11-22 16:08:33

标签: javascript mysql node.js

在我的Node JS / MySQL DB上通过Pokemon名称正确实现搜索过滤器时遇到一些麻烦。当我搜索我得到“搜索/?键=未定义404(未找到)”任何想法?这是我的搜索路线

 router.get('/search', function(req, res){
        var mysql =  req.app.get('mysql');
        var sql='SELECT pokemonname FROM pokemon WHERE pokemonname LIKE "%' + req.key.query + '%';
        sql = mysql.pool.query(sql, function(error, results, fields) {
                if(error) {
                   res.write(JSON.stringify(error));
                   res.end();
                } else {
                        res.status(200);
                        res.end();
        }
   });
});

这是我的手柄文件,用于呈现搜索栏/搜索按钮

<table id="table">
    <thead>
        <th>Pokemon Name   </th>
        <th>Evolution Level   </th>
        <th>Move Name   </th>
    </thead>
    <input type="text" class="search form-control" id="searchinput" placeholder="Pokemon Name">
    <input type="button" class="btn btn-primary" value="Search" onclick="getUsers({{id}})"/>
        <br>
    <tbody>
        {{#each pokemon}}
        <tr>
            <td>{{pokemonname}}</td>
            <td>{{evolutionlevel}}</td>
            <td>{{movename}}</td>
            <td><button onclick="deletePokemon({{id}})">Delete</td>
        <td><a href="/pokemon/{{id}}">Update</a></td>
        </tr>
        {{/each}}
    </tbody>

最后我的jQuery中的search.js函数

function getUsers(searchinput){
        $.ajax({
                type: 'GET',
                url: '/search/?key=' + searchinput,
                success: function(result){
                        window.location.reload(true);
                }
        })
};

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

{{id}}循环中使用#each的大部分内容,表明idpokemon对象的属性。同时,您的getUser({{id}})在此循环之外使用,导致undefined传递给绑定变量id。我认为你想要将文本输入的值传递给getUser函数,因此你的形式参数的名称,例如searchinput。您可以使用Ember helper中的{{input value=searchinput}},然后使用按钮中的getUser({{searchinput}})。同时注意encoding query params传递给调用的AJAX服务。