gpt4 book ai didi

javascript - 使用 promise 从数据库中获取身份值

转载 作者:搜寻专家 更新时间:2023-10-30 22:46:46 25 4
gpt4 key购买 nike

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

我有一个 vue.js 应用程序,我试图在其中向表中插入一条记录。我希望使用 promise 来获取我刚刚执行的插入的标识值的值。

插入部分可以正常工作,但取回并使用它却不行。

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

            var addFamilyMemberRowObj;

axios
.get("http://localhost:5000/addMember?familyId="+ vm.familyId+"&memberName="+vm.memberName+"&isAdmin="+vm.isParent)
.then(response => (vm.returnId = response.data))
.then(console.log(vm.returnId["Data"][0].id))
.then(vm.memberId = vm.returnId["Data"][0].id)
.then(
addFamilyMemberRowObj = {
arrIndex: vm.addFamilyRowIndex,
familyId: vm.familyId,
familyName: vm.familyName,
familyMemberName: vm.memberName,
memberId: vm.memberId,
isParent: vm.isParent
}
)
.then(vm.addFamilyRowArray.push(addFamilyMemberRowObj))
.then(vm.addFamilyRowIndex = vm.addFamilyRowIndex + 1);

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

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

我的数据库代码如下:

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 也[从此代码] 打印出正确的值):

{ Data: [ { id: 24 } ] }

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

"Unable to get property '0' of undefined or null reference"

但是,正如我提到的,如果我在 promise 之外打印出 vm.returnId["Data"][0].id,我最终会在后续调用中获得一个值(id 为 1后面)。

我知道就获取值而言语法是正确的,但在 promise 内部它不喜欢它。

我知道有很多东西需要拆开。我可能做错了很多事情。如您所知,其中许多代码片段直接来自示例。欢迎任何帮助。

最佳答案

问题的根源在于 then 需要一个函数作为参数。.then(console.log(vm.returnId["Data"][0].id)) 是一个错误的调用。

应该是.then(() => console.log(vm.returnId["Data"][0].id))

关于javascript - 使用 promise 从数据库中获取身份值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com