TypeScript冲突类型枚举数和NestJS / ExpressJS中的数字

时间:2018-10-31 14:58:19

标签: javascript node.js typescript express next.js

我将类型添加到我的NestJS服务器。

我已经编写了一个控制器(Express爱好者的路由),然后尝试指定params的类型:

var searchInput = document.getElementById("searchMovie");

    // get movie
    searchInput.onkeydown = function() {
    var searchData = document.getElementById("searchMovie").value;

    if (searchData.length >= 3 ) {
        var request = new XMLHttpRequest();
        request.open('GET', 'http://www.omdbapi.com/?s=' + searchData + '&apikey=000000', true);
        request.onload = function () {
            // Begin accessing JSON data here
            var data = JSON.parse(this.response);

            const wrapper = document.createElement('div');
            app.appendChild(wrapper);
            var results = data;
            if (request.status >= 200 && request.status < 400) {
                console.log(data);
                Object.keys(data.Search).map(function(key, index) {
                    console.log(data.Search[index].Title);

                    const searchResultsContainer = document.createElement('div');
                    searchResultsContainer.setAttribute('class', 'row');

                    const h1 = document.createElement('h1');
                    h1.textContent = data.Search[index].Title;
                    wrapper.appendChild(searchResultsContainer);
                    searchResultsContainer.appendChild(h1);
                    console.log(searchResultsContainer);
                 });
            } else {
                console.log('error');
            }
        };
        request.send();
    }
  };

由于我在public async getAllMessages( @Query('startDate', ValidateDate) startDate: string, @Query('endDate', ValidateDate) endDate: string, @Res() res: Response, ): Promise<string> { const data = await this.crudService.getPeriodicMessages(startDate, endDate); return res.status(HttpStatus.OK).send(data); } 中收到此错误消息,因此我在Response中添加了类型res

错误res.status(HttpStatus.OK).send(data)

我已经检查了响应类型具有Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures.类型的status成员,并且number也是类型HttpStatus.OK的成员,所以如何将其转换为{{1} }?

我也读过other threads,但无法解决我的问题。

1 个答案:

答案 0 :(得分:1)

在此示例中,无需使用@Res()注入响应对象。

您可以执行以下操作,nest将自动处理响应。默认情况下,http状态代码始终为200(POST为201)。

public async getAllMessages(@Query('startDate', ValidateDate) startDate: string,
                            @Query('endDate', ValidateDate) endDate: string): Promise<string> {
  return this.crudService.getPeriodicMessages(startDate, endDate);
}

对于特殊情况,您只需注入响应对象,例如动态设置响应代码。