Mongoose .find 带有 req.params 数组?和 res.json 每个值和计数的数组?

Posted

技术标签:

【中文标题】Mongoose .find 带有 req.params 数组?和 res.json 每个值和计数的数组?【英文标题】:Mongoose .find with a req.params array? and res.json an array of each value and count? 【发布时间】:2014-07-28 22:29:26 【问题描述】:

理想情况下,用户可以在搜索字段中输入多个标签,然后在客户端(在调用 .get 之前)对这些标签进行分隔,并通过每次按键通过 ajax 发送。

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

如果是这样,服务器会是什么样子 - 现在,我只收到 Postman 对 localhost:4200/api/v1/tag/tagName .. 但不是 /tag/tagName1+tagName2 或 /标签/标签名称1&标签名称2

这是当前的 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 (还没有真正探索这个)然后 res.json 一个标签的数组,我可以循环获取每个 tagName 和每个特定标签的计数。

【问题讨论】:

【参考方案1】:

这实际上不是特定于 mongo 的问题,而是一个 express 问题(我假设您在这里使用 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

【讨论】:

以上是关于Mongoose .find 带有 req.params 数组?和 res.json 每个值和计数的数组?的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose .find 带有 req.params 数组?和 res.json 每个值和计数的数组?

如何从 find 方法返回 Mongoose 结果?

Mongoose find() 回调实际上没有被调用

Mongoose 在架构级别排除文档结果

Mongoose:find() 忽略重复值

mongoose .find() ???????????????