我正在从角度组件向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和正确的响应。但什么也没显示。
答案 0 :(得分:0)
在角度上,您使用this.spelling
过滤结果,据我所知this.spelling
包含您搜索的词(即hands
),而d.orth
包含单数形式。
从那时起,过滤将删除客户端的每个元素。
如何正确解决此问题取决于您的用例。例如。单数以在客户端进行过滤或删除客户端过滤,因为您已经在服务器端进行过
。