Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在sql请求中使用promise_Javascript_React Native - Fatal编程技术网

Javascript 如何在sql请求中使用promise

Javascript 如何在sql请求中使用promise,javascript,react-native,Javascript,React Native,当调用函数时,我正在调度一个操作,它应该尝试将文件/图像传递给另一个函数,以便在完成后将其上载到本地文件夹尝试将insert插入sqlite数据库,以确保这些步骤将逐个完成,我使用了承诺,我的问题是,该图像已上载到本地文件夹,但插入到数据库失败,请帮助查找如何更正,以完成插入到数据库的操作 这是我的密码: export const addPosts = ( imageName , data,title,categ,idSubCateg) => { const idSubCat = id

当调用函数时,我正在调度一个操作,它应该尝试将文件/图像传递给另一个函数,以便在完成后将其上载到本地文件夹尝试将insert插入sqlite数据库,以确保这些步骤将逐个完成,我使用了承诺,我的问题是,该图像已上载到本地文件夹,但插入到数据库失败,请帮助查找如何更正,以完成插入到数据库的操作

这是我的密码:

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请不要只是复制程序包自述介绍(没有正确引用),而是展示如何将该库应用于问题中所述的特定问题。