Javascript 使用承诺从数据库获取标识值

Javascript 使用承诺从数据库获取标识值,javascript,vue.js,promise,axios,Javascript,Vue.js,Promise,Axios,我对promises、axios和节点mssql的世界还很陌生。所以我可能做错了 我有一个vue.js应用程序,试图在其中向表中插入一条记录。我希望用承诺来获得我刚才执行的插入的身份价值 镶件零件正在工作,但取回并使用它却不起作用 下面是我的调用代码,它被包装在Try/Catch中(错误如下): 您可能需要了解的一些项目。returnId是一个数组。我将在下面向您展示我的DB代码。vm.returnId[“Data”][0].id是获取值的唯一方法 我已经打印出了这个值,在承诺之外,它最终返回了

我对promises、axios和节点mssql的世界还很陌生。所以我可能做错了

我有一个vue.js应用程序,试图在其中向表中插入一条记录。我希望用承诺来获得我刚才执行的插入的身份价值

镶件零件正在工作,但取回并使用它却不起作用

下面是我的调用代码,它被包装在Try/Catch中(错误如下):

您可能需要了解的一些项目。returnId是一个数组。我将在下面向您展示我的DB代码。
vm.returnId[“Data”][0].id
是获取值的唯一方法

我已经打印出了这个值,在承诺之外,它最终返回了一个值。这让我相信这可能是个时间问题

我的数据库代码如下:

app.get('/addMember', function(req,res){
    var data = {
              "Data":""
      };

      try 
      {
          const pool7 = new sql2.ConnectionPool(config, err => {
              pool7.request()
              .query("INSERT INTO Member (FamilyId, MemberName, isAdmin)VALUES("+ req.query.familyId +",'" + req.query.memberName + "', '" + req.query.isAdmin + "') SELECT SCOPE_IDENTITY() as id", (err, result) => {
                  data["Data"] = result.recordset;
                  console.log(data);

                  res.json(data);
              })
          })

      } catch (err) {
          console.log("hasLogin: " + err)
      }     
});
调用此函数后,我已验证插入是否正常工作(并且console.log也正在打印正确的值[来自此代码]):

{数据:[{id:24}]}

当我从vue代码中查看console.log时,会收到以下消息:

“无法获取未定义或空引用的属性“0”

但是,正如我所提到的,如果我打印出的
vm.returnId[“Data”][0].id
超出了承诺范围,我最终会在后续调用中得到一个值(id落后于1)

我知道语法在获取值方面是正确的,但在承诺中它不喜欢它


我知道这有很多东西要打开。我可能做了很多错事。正如您所知,这些代码片段中有很多都是直接从示例中获得的。欢迎提供任何帮助。

问题的根源在于
需要一个函数作为参数。
。那么(console.log(vm.returnId[“Data”][0].id))
是一个不正确的调用


它应该是
。然后(()=>console.log(vm.returnId[“Data”][0].id))

,似乎可以解决id问题。我会为所有人做这些吗?然后打电话?特别是这个:。然后(()=>(addFamilyMemberRowBj={arrIndex:vm.addFamilyRowIndex,familyId:vm.familyId,familyName:vm.familyName,familyMemberName:vm.memberName,memberId:vm.memberId,isParent:vm.isParent})是的,您必须更改所有这些选项。
。然后
执行一个函数,在承诺得到解决时传递给它。有关此主题的更多信息:感谢您的回答和后续链接。非常有用!
app.get('/addMember', function(req,res){
    var data = {
              "Data":""
      };

      try 
      {
          const pool7 = new sql2.ConnectionPool(config, err => {
              pool7.request()
              .query("INSERT INTO Member (FamilyId, MemberName, isAdmin)VALUES("+ req.query.familyId +",'" + req.query.memberName + "', '" + req.query.isAdmin + "') SELECT SCOPE_IDENTITY() as id", (err, result) => {
                  data["Data"] = result.recordset;
                  console.log(data);

                  res.json(data);
              })
          })

      } catch (err) {
          console.log("hasLogin: " + err)
      }     
});