NodeJS 服务器执行 POST 请求,但是 returns HTTPErrorResponse

NodeJS server performs POST request, but returns HTTPErrorResponse

我正在使用 Angular 的 HttpClient 向我的 NodeJS 服务器执行 POST 请求,如下所示:

createData(data:any):Observable<any> {
    // verifying the content type is need to ensure the JSON object is sent as
    // JSON object to NodeJS server 
    const options = {
      headers: new HttpHeaders({
          'Content-Type': 'application/json',
      })
  };
  // This still throws an HTTPResponse error,  - 
  // SyntaxError: Unexpected token A in JSON at position 0 at JSON.parse
    return this._http.post(`${this.apiUrl}`, data, options);
  }

我服务器的 POST 功能是这样设置的:

router.post('/', async (req,res) => {
        const body = req.body;
        await database.execute(`
            INSERT INTO Post (
                title,
                body,
                date_added
            ) VALUES (
                @title,
                @body,
                NOW()
            )
            `, {
                title: body.title,
                body: body.body,
            })
        res.end('Added post')
    })

调用 createData 时,执行 POST 方法(我检查了开发工具中的网络面板,从服务器返回响应“已添加 post”,我的 json 对象作为负载发送),但控制台仍然 returns 这个 HTTPErrorResponse:

SyntaxError: JSON 中的意外标记 A 在 JSON.parse 的位置 0 () 在 XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:7508:51) 在 ZoneDelegate.invokeTask (ht..

如果服务器函数已成功返回,此错误的原因可能是什么?

服务器可以 return 成功,但是回调函数 CreateData 需要从服务器 return 编辑一个 JSON 对象。因为字符串 returned 不是 JSON,所以引发了 HTTPErrorResponse。解决方案是将字符串 returned 从我的服务器更改为 JSON 对象,如下所示:

router.post('/', async (req,res) => {
        const body = req.body;
        await database.execute(`
            INSERT INTO Post (
                title,
                body,
                date_added
            ) VALUES (
                @title,
                @body,
                NOW()
            )
            `, {
                title: body.title,
                body: body.body,
            })
        res.end({}) // returns successfully, no error
    })