猫鼬.找到一个请求.参数数组?res.json是每个值和计数的数组

Mongoose .find with a req.params array? and res.json an array of each value and count?

本文关键字:数组 json res 一个 猫鼬 参数 请求      更新时间:2023-09-26

理想情况下,用户将能够在搜索字段中输入多个标记,然后在客户端(在.get调用之前)进行分隔,以便在每次按键时通过ajax发送。

在服务器端工作(使用Postman测试API),如果.get将变量标记作为['tag1', 'tag2']的数组提供,可以req.params.tags是数组吗?

如果是这样,它会是什么样子的服务器-现在,我只得到一个响应从邮差localhost:4200/api/v1/tag/tagName ..但/tag/tagName1+tagName2或/tag/tagnam1 &tagName2

下面是当前的API:

router.route('/tag/:tags')
    // get the list of tags for userGenerated tags (accessed at GET http://localhost:4200/api/v1/tag/:tags)
    .get(function(req, res) {
        Story.count( { tags: { $in: [  req.params.tags ] } }, function (err, count) {
            if (err)
                res.send(err);
            console.log('there is/are %d story/ies with this/these tag(s)', count);
            if (count >= 1) {
                Story.find( { tags: { $in: [  req.params.tags ] } }, 'tags', function(err, stories) {
                    if (err)
                        res.send(err);
                    res.json(stories); // something to return the count of each tag with the tag
                }); // find and return tags
            } // if count >= 1
            if (count < 1) {
                res.json({ message: count + ' results' });
            } // if count < 1 
        }); // .count
    }); // get list of tags

其次,我是否需要使用.aggregate(还没有真正探索这一点)然后为.json提供一个标记数组,我可以循环以获得每个tagName和每个特定标记的计数。

这实际上不是一个特定于蒙古人的问题,它是一个表达问题(我假设你在这里使用express)。

express无法自动将动态段(url中前缀为:的部分)解析为数组,但您可以轻松地自己完成:

// example url: /tags/tag1,tag2
app.get('/tags/:tags', function(req, res){
  var tags = req.params.tags.split(','); // ['tag1','tag2']
  res.send('you entered tags :' + tags.join(','));
});

下面是一个可运行的示例:http://runnable.com/U5SI2eAfzMh7Sfkt/example-reading-an-array-of-arguments-in-req-params-with-express-for-node-js-and-hello-world