Javascript 如何在sql请求中使用promise
当调用函数时,我正在调度一个操作,它应该尝试将文件/图像传递给另一个函数,以便在完成后将其上载到本地文件夹尝试将insert插入sqlite数据库,以确保这些步骤将逐个完成,我使用了承诺,我的问题是,该图像已上载到本地文件夹,但插入到数据库失败,请帮助查找如何更正,以完成插入到数据库的操作 这是我的密码:Javascript 如何在sql请求中使用promise,javascript,react-native,Javascript,React Native,当调用函数时,我正在调度一个操作,它应该尝试将文件/图像传递给另一个函数,以便在完成后将其上载到本地文件夹尝试将insert插入sqlite数据库,以确保这些步骤将逐个完成,我使用了承诺,我的问题是,该图像已上载到本地文件夹,但插入到数据库失败,请帮助查找如何更正,以完成插入到数据库的操作 这是我的密码: export const addPosts = ( imageName , data,title,categ,idSubCateg) => { const idSubCat = id
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));
})
});
});
}
你做错了你必须这样用
const SQLite = {
registerDataIntoDtabase : ()=> new Promise((resolve, reject)=>{
}),
addPosts:()=> new Promise((resolve, reject)=>{
// you code ...
SQLite.registerDataIntoDtabase( your_parameters ).then()
}),
}
在您的情况下,函数没有被调用,是的,在sql查询中使用try-catch从sql中获取一些错误。Promise mysql是mysqljs/mysql的包装器,它用Bluebird promises包装函数调用。通常,这将通过Bluebird的.promisifyAll()方法完成,但mysqljs/mysql的足迹与Bluebird所期望的不同 要安装promise mysql,请使用npm: $npm安装承诺mysql 有关如何使用mysql函数的文档,请参阅mysqljs/mysql;有关Bluebird承诺的文档,请参阅Bluebird 此时,仅支持标准连接(使用.createConnection())和池(使用.createPool())。createPoolCluster尚未实现。
对于更多的访问您可以考虑在编写代码时使用一致的缩进-它将使阅读和调试变得更容易,不仅对于潜在的回答者,而且对您来说,当我们都可以看到“代码”> {<代码> >代码> } /代码>块及其嵌套级别时,一目了然,而不必仔细地挑选每一行,只是挑选逻辑路径。问题看起来像是您随后调用了
resolve
和reject
,没有if/else
或try/catch
将它们分开,这样它就不起作用了从你的回答中不清楚你认为OP做错了什么,或者他应该如何修复它,但看起来你建议使用!他想在redux边界函数中调用这个RegisterDataInToDatabase,这是不可能的。你怎么能调用范围外的函数呢@Bergi请不要只是复制程序包自述介绍(没有正确引用),而是展示如何将该库应用于问题中所述的特定问题。