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