节点 - 删除引用文件的字符串数组

Node - Delete an array of strings referenced to files

在 Angular 中,我正在传递一个字符串数组,其中包含对我要删除的文件的引用:

let filesToDeleteOnCancel = ["file1.png", "file2.png", "file3.png"];

this.http.delete(this.apiDomain + '/api/gameCentre/deleteAssets', filesToDeleteOnCancel).subscribe((data: any) => {
  console.log(data);
}, error => {});

这似乎工作正常。但是我对节点 api 感到困惑,不知道如何传递这个数组以便删除文件。到目前为止我有:

router.delete('/deleteAssets/', function(req, res) {
  console.log("How can I get the array here?");
  try {
    var files = ['../game/src/file1.png', '../game/src/file2.png', '../game/src/file3.png'];
    files.forEach(path => fs.existsSync(path) && fs.unlinkSync(path))
    // success code here
  } catch (err) {
    // error handling here
    console.error(err)
  }
});

将您的 HTTP 方法更改为 POST 并通过 body 发送。您可以通过 req.body 访问正文。您可能还需要使用 Node.js body parsing middleware.

let filesToDeleteOnCancel = ['../game/src/file1.png', '../game/src/file2.png', '../game/src/file3.png'];

this.http.post(this.apiDomain + '/api/gameCentre/deleteAssets', filesToDeleteOnCancel).subscribe((data) => {
    console.log(data);
}, error => { });

router.post('/deleteAssets/', function (req, res) {
    console.log("How can I get the array here?");
    try {
        var files = req.body;
        files.forEach(path => fs.existsSync(path) && fs.unlinkSync(path))
        // success code here
    } catch (err) {
        // error handling here
        console.error(err)
    }
});

您可以像下面这样访问请求正文:

var files = req.body;

如果输出为空,请不要忘记 body-parser。