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 每个值和计数的数组?的主要内容,如果未能解决你的问题,请参考以下文章