Javascript 是否可以将数据从节点js传递到前端js而不是html?

Javascript 是否可以将数据从节点js传递到前端js而不是html?,javascript,node.js,Javascript,Node.js,我正在尝试将数据(数组)从node.js后端传递到前端js,以便在那里进行处理。我不想将数据直接传递到后端服务的html文件,因为我想保持它的干净,不想在那里做任何循环等 我的后端部分如下所示: app.get("/search-db", function (req, res) { const term = req.query.term; findInDb(term); res.redirect('/search', { searchR

我正在尝试将数据(数组)从node.js后端传递到前端js,以便在那里进行处理。我不想将数据直接传递到后端服务的html文件,因为我想保持它的干净,不想在那里做任何循环等

我的后端部分如下所示:

app.get("/search-db", function (req, res) {
    const term = req.query.term;
    findInDb(term);
    res.redirect('/search', {
        searchResults: searchResults,
    });
})

async function findInDb(query) {
    const collection = await getDbCollection();
    await collection.find().forEach((item) => {
        console.log(item.artist);
        if (item.artist.includes(query) || item.name.includes(query)) {
            searchResults.push(item);
        }
    })
}

这是可能的,还是我必须把我的html弄乱,并在那里使用循环来处理传递的结果?

您的网页可以使用AJAX via向服务器发出
/search db
API请求。您的服务器路由处理程序应该从数据库获取结果,然后调用将JSON响应发送回客户端,而不是将客户端重定向到新页面

例如:


另外,与此无关,您的
findInDb
函数应该返回搜索结果,而不是将它们放在全局变量(
searchResults
)中。

如果客户端没有请求,服务器无法向客户端发送数据。客户端应获取数据。客户端JS应使用AJAX请求数据。您的网页应使用AJAX向服务器发出/search db API请求。服务器路由处理程序应该从数据库获取结果,然后调用
res.send(…)
将JSON响应发送回客户端,而不是
res.redirect(…)
将客户端重定向到新页面。另外,不相关的,
findInDb
函数应该返回搜索结果,而不是将它们放在全局变量(searchResults)中。例如。@jarmod我实际上使用just form生成带有查询参数的URL,并使用req.query获取此查询参数,然后使用它搜索数据库。因此,我需要从fetch开始,并找到使用fetch发送查询参数的方法?是的,在网页中收集您需要的数据,然后使用fetch,而不是执行典型的POST。您可以根据需要使用fetch发布POST或GET(或其他)。