从 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
部分
在过去的一个小时里,我一直在为此苦苦挣扎。我无法让它工作。在我的传奇中,我有一个简单的调用,从本地 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
部分