Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 承诺在fetch Express API/Mongoose调用后不触发.then()_Javascript_Express_Mongoose_Promise_Fetch - Fatal编程技术网

Javascript 承诺在fetch Express API/Mongoose调用后不触发.then()

Javascript 承诺在fetch Express API/Mongoose调用后不触发.then(),javascript,express,mongoose,promise,fetch,Javascript,Express,Mongoose,Promise,Fetch,我希望有人能告诉我为什么我没能兑现诺言,然后打电话给我。然后再打电话给我 我正在为我的口袋妖怪卡制作一个库存系统,它有一个react前端和一个express后端。当我点击FE上的“增加库存”按钮时,下面是调用API的函数: incInventory(卡,cond){ //this.setState({currentValue:this.state.currentValue+1}); const result=fetch('http://mySecretAPIServer/items/“+卡.\u

我希望有人能告诉我为什么我没能兑现诺言,然后打电话给我。然后再打电话给我

我正在为我的口袋妖怪卡制作一个库存系统,它有一个react前端和一个express后端。当我点击FE上的“增加库存”按钮时,下面是调用API的函数:

incInventory(卡,cond){
//this.setState({currentValue:this.state.currentValue+1});
const result=fetch('http://mySecretAPIServer/items/“+卡.\u id{
方法:'放',
标题:{
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”,
},
//我们将React状态转换为JSON,并将其作为POST主体发送
正文:JSON.stringify({u id:card.\u id,cond:cond,op:“incQuantity”,otherId:card.id})
});
控制台日志(结果);
//***为什么这个没有运行***
结果。然后((res)=>{
log(“这不是打印…”);
});
}
以下是它正在命中的Express端点:

//更新(修改)
路由器.put('/:id',(请求,res)=>{
const conditionToUpdate=“q”+req.body.cond;
常量amtToUpdate=req.body.op=='incQuantity'?1:-1;
返回新承诺((解决、拒绝)=>
findByIdAndUpdate(req.params.id,{$inc:{[conditionToUpdate]:amtToUpdate},(err,result)=>{
决心(结果);
}));
});
如您所见,我正试图从端点返回一个承诺。在FE上获取后,以下是尝试调用之前承诺的样子。然后()对其进行调用:

但是
.then()
从不运行。我甚至不需要获取数据,真的——我只需要在获取完成后触发一些代码


希望有人能帮我理解我错过了什么!谢谢

您正在返回承诺并解决它,但您没有使用
res
将任何响应发送回客户端

在express代码中,您不需要承诺,您可以这样做:

router.put('/:id', (req, res) => {
    const conditionToUpdate = "q" + req.body.cond;
    const amtToUpdate = req.body.op === 'incQuantity' ? 1 : -1;

    Pokemon.findByIdAndUpdate(req.params.id, {$inc: {[conditionToUpdate]: amtToUpdate}}, (err, result) => {
        res.json(result);
    }));
});

您是否尝试过使用
.catch
检查错误?您是否尝试过在服务器中使用
res.send()
进行实际响应服务器代码中返回的承诺不是如何发送请求响应-查看如何使用express-@JaromandaX与本问题中的口袋妖怪不同,OP似乎不想捕获它们all@Phil-天哪!!!你是爸爸,对吧!!!:你们这帮家伙都在做我的星期五是的!!!从这个和上面的评论,我已经修复了它,它的工作!!!谢谢findByIdAndUpdate(req.params.id,{$inc:{[conditionToUpdate]:amtToUpdate}})。然后(modified=>res.json(modified)).catch(err=>console.log(err));});是的---解决得太快了,我需要再等3分钟才能接受答案,哈哈