理想情况下,用户可以在搜索字段中输入多个标签,然后在客户端(在.get调用之前)取消,通过每个按键在ajax上发送。
在服务器端工作(使用Postman测试API),如果.get将变量标签作为['tag1','tag2']的数组提供,可以req.params.tags是一个数组?
如果是这样,服务器会是什么样子 - 现在,我只收到Postman对localhost的响应:4200 / api / v1 / tag / tagName ..但不是/ tag / tagName1 + tagName2或/标签/ tagName1&安培; 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(还没有真正探索这个)然后res.json我可以循环的标签的ARRAY来获取每个tagName和每个特定标签的计数。
答案 0 :(得分:2)
这实际上不是一个特定于mongo的问题,这是一个明确的问题(我假设你在这里使用快递)。
快递没有办法自动将动态片段(网址中以:
为前缀的部分)解析为数组,但您可以自己轻松完成:
// 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(','));
});