微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在NodeJS / ReactJS应用中插入数据,无法返回承诺

如何解决无法在NodeJS / ReactJS应用中插入数据,无法返回承诺

我发现无法使用ReactJS将数据导入我的商店。 我有一个节点服务器及其服务的http:// localhost:9000 / products 但是,当获取数据并将其作为JSON传递给reducer时,我收到来自reducer的错误

TypeError:action.products.reduce不是函数

看起来它正在返回一个承诺而不是JSON。

我的提取函数如下:

export async function get () {
    return fetch('http://localhost:9000/products').then(response => response.json()).then(response => { return response })
}
export default {get}

API:

import { get } from '../actions/get'
const TIMEOUT = 1000
console.log(get())
export default {
  getProducts: (cb,timeout) => setTimeout(() => cb(get()),timeout || TIMEOUT),buyProducts: (payload,cb,timeout) => setTimeout(() => cb(),timeout || TIMEOUT)
}

还有我的减速器功能

const byId = (state = {},action) => {
  switch (action.type) {
    case RECEIVE_PRODUCTS:
      return {
        ...state,...action.products.reduce((obj,product) => {
          obj[product.id] = product
          return obj
        },{})
      }
    default:
      const { productId } = action
      if (productId) {
        return {
          ...state,[productId]: products(state[productId],action)
        }
      }
      return state
  }
}

我希望我已经解释好了。任何帮助表示赞赏。

解决方法

通过将API文件更改为以下内容来修复:

let products
fetch('http://localhost:9000/products')
  .then(
    function(response) {
      if (response.status !== 200) {
        console.log('Looks like there was a problem. Status Code: ' +
          response.status);
        return;
      }
      response.json().then(function(data) {
        products = data
      });
    }
  )
  .catch(function(err) {
    console.log('Fetch Error :-S',err);
});
export default {
  getProducts: (cb,timeout) => setTimeout(() => cb(products),timeout || TIMEOUT),buyProducts: (payload,cb,timeout) => setTimeout(() => cb(),timeout || TIMEOUT)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。