Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 从数据库查询返回数据_Javascript_Pouchdb - Fatal编程技术网

Javascript 从数据库查询返回数据

Javascript 从数据库查询返回数据,javascript,pouchdb,Javascript,Pouchdb,从数据库查询返回数据时遇到问题。我试图构建一个函数,当调用该函数时,它将从数据库返回特定的数据。这是我的密码: function getUserFullName() { var db = "userInfo"; var pouch = new PouchDB(db); pouch.get("token").then(function (result) { console.log(result-user

从数据库查询返回数据时遇到问题。我试图构建一个函数,当调用该函数时,它将从数据库返回特定的数据。这是我的密码:

function getUserFullName() {
            var db = "userInfo";
            var pouch = new PouchDB(db);
            pouch.get("token").then(function (result) {
            console.log(result-user_real_name);
                return result.user_real_name;
            }).catch(function (error) {
                console.log(error);
            });
        }

因此,函数返回一个未定义的。有人知道我做错了什么吗?

问题是,看起来您是在同步运行“getUserFullName”,但其中有一个异步函数“pagg.get”。异步函数的返回值需要在回调或承诺中返回

若“pocket.get”返回一个承诺,正如您在上面用“.”显示的那个样,那个么“您可以这样编写代码:

function getUserFullName() {
  var db = "userInfo";
  var pouch = new PouchDB(db);

  return pouch.get("token")
}
getUserFullName()
  .then(function(fullUserName){
    console.log(fullUserName);
  })
  .catch(function(err){
    console.log(err);
  });
然后像这样运行它:

function getUserFullName() {
  var db = "userInfo";
  var pouch = new PouchDB(db);

  return pouch.get("token")
}
getUserFullName()
  .then(function(fullUserName){
    console.log(fullUserName);
  })
  .catch(function(err){
    console.log(err);
  });
让我知道这是否有效,或者如果你有任何问题。谢谢

编辑:
看起来“邮袋。获取”确实是一个承诺。请参见他们的示例。因此,此代码将起作用。

您是否只记录了结果并查看是否实际得到了结果?日志(“数据库结果”,结果);在返回之前。是的,我确定它正在返回数据。请发布结果对象。@axtscz您是如何运行此函数的?get是一个异步函数。如果同步运行getUserFullName,则不会得到结果。getUserFullName需要一个回调作为参数/result-user\u real\u name/result.user\u real\u name/It works,我遇到的问题是它仍然异步运行。依赖于其结果的代码在返回值之前正在运行。@依赖于此结果的axtscz代码应该放在“getUserFullName”的“.then”函数中,其中显示“console.log(fullUserName)。”这将是“getUserFullName”的结果。“getUserFullName”必须异步运行,因为它依赖于数据库查询的结果。好的,这很有意义。谢谢