修改查询参数:表达JS获取请求

时间:2019-04-29 04:50:14

标签: angular express parameters tokenize

我正在从角度组件向Express服务器发送请求。一切正常(我得到了预期的结果,并且可以正确显示)。

当我尝试修改QUERY参数时,什么都没有显示。例如,假设用户搜索单词:“手”。我想对单词进行标记以使其单数。

这是服务器端的实现:

app.get('/api/words', function(req, res) {
  var name = req.query.name;
  var option = req.query.option;  

  // english word:
  if(option == 1){
    // This is where I check if the word is plural to turn it into singular form
    if(name[name.length - 1]== 's'){
      name = name.slice(0, name.length - 1);
    }

    fs.readFile('words.xml', 'utf-8', function (err, data){
      if(err){

      } else{
        parser.parseString(data, function (err, result) {
        let words = result['entry']['form'];
        str= words.filter(x => x.orth == name);
  }

      res.send(str);

调用http服务的角度组件是:

 getWordList(name: string){
    this.spelling = name.toString().toLowerCase();
    this.webservice.getWords(this.spelling, this.selected)
    .subscribe((res: Array<Word>)=> {
      this.elements = res.filter(d=> d.orth == this.spelling || d.asuddimIsem == this.spelling);

      this.dataLoaded.emit(this.elements);
      this.webservice.setData(this.elements);
      this.router.navigate(['/words']);
    })
  }

数据是带有英语单词列表的xml文件。该查询搜索单词的单数形式。因此,如果它是一个复数词,则标记化应检索正确的项目。

例如,当我用“手”发送请求时,控制台将显示状态代码200和正确的响应。但什么也没显示。

1 个答案:

答案 0 :(得分:0)

在角度上,您使用this.spelling过滤结果,据我所知this.spelling包含您搜索的词(即hands),而d.orth包含单数形式。

从那时起,过滤将删除客户端的每个元素。

如何正确解决此问题取决于您的用例。例如。单数以在客户端进行过滤或删除客户端过滤,因为您已经在服务器端进行过