从 React Native mongodb 获取数据时,Redux saga API 调用 returns 未定义?

Redux saga API call returns undefined when fetching data from react native mongodb?

在过去的一个小时里,我一直在为此苦苦挣扎。我无法让它工作。在我的传奇中,我有一个简单的调用,从本地 mongo 数据库获取一些数据以响应本机 (https://github.com/smartdemocracy/react-native-local-mongodb),然后使用 put().

发送它
let day  = yield call(getDay, payload.day.date);
yield  put({ type: 'UPDATE_DAY', payload:{day:payload.day,index:payload.index,} })

这是我打的 API 电话:

return db.findOne({ _id: date }, function (err, doc) {
   return doc;
});

我的理解是调用函数需要一个返回的 Promise,但我什至不确定我拥有的是否真的是一个。

所以你的传奇是这样的:

let day  = yield call(getDay, payload.day.date);
yield  put({ type: 'UPDATE_DAY', payload:{day:payload.day,index:payload.index,} })

然后我们将创建一个函数 getDay 可能类似于

const getDay = (date) => {
  return new Promise((resolve, reject) => {
    db.findOne({ _id: date , function (err, doc) {
       if(err) reject(err)
       else resolve(doc)
    })
  }
}

如您所见,我们只是将函数包装在 Promise 中,并使用 resolve/reject 获取 yield 调用的结果。

郑重声明,您应该将收益包装在 try/catch 中,如果触发拒绝,它将 运行 catch 部分