【发布时间】:2019-02-14 09:47:03
【问题描述】:
我在调用函数时调度一个动作,它应该尝试将文件/图像传递给另一个函数以将其上传到本地文件夹,一旦完成尝试插入 sqlite 数据库,以确保这些步骤将是一个一个完成,我使用了Promises,我的问题是图像上传到本地文件夹但插入数据库失败,请帮助找到我如何正确完成插入数据库。
这是我的代码:
export const addPosts = ( imageName , data,title,categ,idSubCateg) => {
const idSubCat = idSubCateg ? idSubCateg : 0;
return (dispatch) => {
dispatch({ type: ADDING_POST });
new Promise((resolve, reject) => {
uploadImage(imageName, data) // this for upload image to local folder
const postToSave = { title, imageName };
resolve(registerDataIntoDtabase(dispatch,imageName,title,categ,idSubCat));
reject(handleError(dispatch, 'an Error Occured'));
});
}
}
const registerDataIntoDtabase = (dispatch,title,imagenmae,categ,idSubCat) => {
//insert into database
new Promise((resolve, reject) => {
db.transaction((tx) => {
tx.executeSql('INSERT INTO rooms (room,idHouse,title,idOwner) VALUES (?,?,?,?)', [imagenmae,categ,title,idSubCat], (tx, results) => {
resolve(dispatch({ type: ADDING_SUCCESS }));
reject(handleError(dispatch, error.message));
})
});
});
}
【问题讨论】:
-
您可能会考虑在编写代码时使用一致的缩进 - 这将使阅读和调试变得更加容易,不仅对于潜在的回答者,而且对于您来说,当我们都可以看到
{}块及其嵌套级别一目了然,而不必仔细挑选每一行来挑选逻辑路径。 -
这个问题看起来你随后同时调用了
resolve和reject,没有if/else或try/catch将它们分开,所以它不起作用