首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在node.js和mongoDb中生成实时搜索结果

如何在node.js和mongoDb中生成实时搜索结果
EN

Stack Overflow用户
提问于 2022-01-11 20:34:43
回答 1查看 277关注 0票数 0

我正在尝试实现一个功能,在这个路径上有一个输入,以便在数据库中实时搜索员工。

代码语言:javascript
运行
复制
app.get('/delete' , isLoggedIn , (req , res) => {
    res.render('pages/delete')
})

此路径为搜索输入提供服务。如何创建基于keyup事件侦听器的实时搜索,该侦听器将数据发送到mongoDb/mongoose以搜索并返回页面上的结果?

我知道如何执行事件侦听器来获得类似于delete.js文件中的类型

代码语言:javascript
运行
复制
const deleteSearchInput = document.querySelector('#search-input');

deleteSearchInput.addEventListener('keyup' , (e) => {
    let search = e.target.value.trim()
})

如何将值"e“发送到post路由以执行搜索并将其返回到页面

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-11 23:11:54

AJAX (使用JavaScript fetch API)。AJAX允许JavaScript在不重新加载的情况下向服务器发送请求。

代码语言:javascript
运行
复制
const deleteSearchInput = document.querySelector('#search-input');

deleteSearchInput.addEventListener('keyup' , (e) => {
    let search = e.target.value.trim();
    fetch('/delete', {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({search})
    }).then(res =>
        res.json()
    ).then(data => {
        console.log(data.result); // <-- success!
    }).catch(err => {
        alert('error!');
        console.error(err);
    });
});

然后,您需要对服务器端进行更改。由于您要发送一个POST请求,所以需要创建一个处理程序来发布:

代码语言:javascript
运行
复制
app.post('/delete', isLoggedIn, (req, res) => {
    res.send('success!');
});

这将处理post请求,并且只处理post请求。现在,要获得发送给服务器的任何内容的值,我们需要使用一个名为body解析器的npm包,它解析传入的请求。在shell中运行以下命令:

代码语言:javascript
运行
复制
npm i body-parser

然后,在声明路由之前,在服务器文件的顶部导入和使用body解析器库:

代码语言:javascript
运行
复制
const bodyParser = require('body-parser');
app.use(bodyParser.json()); // <-- add the JSON parser

最后,再次更改处理程序:

代码语言:javascript
运行
复制
app.post('/delete', isLoggedIn, (req, res) => {
    const { search } = req.body;
    console.log(search);
    // ... do whatever you want and send a response, e.g.:
    const result = 'my awesome message';
    res.json({ result });
});

你就是这么做的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70673135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档