使用获取获取一个简单的string

所以我在我的API中有这个:

router.get('/assetName', function(req, res, next){ //Get the token from the cookies var token = req.cookies.access_token; //Check it with the config secret if(jwt.verify(token, config.secret)){ //find from name in the request body User.find({_id: req.query.id}).then(function(users){ var z; var name = []; var assetHolder = users[0].assets; for(z=0; z < assetHolder.length; z++){ if(assetHolder[z]._id == req.query.vid){ name = assetHolder[z].name; } } console.log(name); res.send(name); //Error handling }).catch((err) => console.error(err)); }else{ res.send("Unauthorized"); } }); 

名称variables已被打印到控制台,如下所示:

 Asset1Name Asset2Name 

我正在使用下面的获取请求:

  var vehiclesT = asset.assetIDs; if(!asset.assetIDs){ vehiclesT = []; } var y; var assets = []; for(y=0; y< assetsTemp.length; y++){ var url = 'api/assetName/?vid='+assetsTemp[y]+'&id='+id; fetch(url, {credentials: 'include', method: 'get'}).then(function(data){ console.log(data); vehicles.push(data); }); } 

但是,温度被打印为:

 Response {type: "basic", url: "http://localhost:4000/api/assetName/?vid=f4ufh49h49fh9fh94fh94hf&id=f484fh48fhfh98fh489fh", redirected: false, status: 200, ok: true…} 

所以车辆arrays是空的。

为什么是这样的,我怎样才能获取打印到控制台的API与取(或更好的方法)的值?

谢谢,埃德。

您在fetch中缺less一个步骤:

 fetch(url, { credentials: 'include', method: 'get' }) .then(function(body){ return body.text(); // <--- THIS PART WAS MISSING }).then(function(data) { console.log(data); vehicles.push(data); }); 

正如你所看到的,第一个Promise不会立即以正确的格式给你提供数据。 它实际上给你一个Response对象 ,在这个对象上你需要调用相应的方法到你想要的格式(Blob,JSON,arrayBuffer等等)

在这种情况下,你提到了你期望的是文本,因此你可以使用Response.text()