gpt4 book ai didi

Azure 移动服务器脚本 - 从另一个表获取列值

转载 作者:行者123 更新时间:2023-12-03 06:04:15 24 4
gpt4 key购买 nike

我正在使用 Azure 移动服务。我有两个表,我想要做的是从 TableA 中获取列值,方法是当我在 TableB 上运行插入时检查它与 TableB 中的列值的匹配位置。

我的插入服务器脚本如下:

function insert(item, user, request) {

var TableA_Table = tables.getTable('TableA');

tableA_Table
.where({ columnValue: item.columnValue })
.read ({ success: setItemColumnValue });

request.execute();

function setItemColumnValue(result)
{
item.tableA_id = result.id;
}
}

我已经确认我的 tableA_Table.where 命令从 TableA 中提取了正确的行,但是当我在 setItemColumnValue 函数中输入 console.log(result) 时,它会打印 undefined。

我找到的所有文档都显示与我的代码类似的代码,但我只是不知道哪里出了问题。任何帮助表示赞赏!

最佳答案

您的脚本中存在一些问题。首先,您必须记住的是表访问代码是异步的。发生的情况是,该函数是回调函数“setItemColumnValue”,仅在 request.execute(); 之后调用,这意味着该项目将在没有 tableA_id 的情况下插入> 成员集。另一个问题是 read 成功回调返回结果数组,而不是单个结果(就像 SQL SELECT FROM 语句),因此该数组没有 id 字段 - 它的成员有它。尝试以某种方式重写代码,如下面的代码,这应该可以工作。

function insert(item, user, request) {

var TableA_Table = tables.getTable('TableA');

tableA_Table
.where({ columnValue: item.columnValue })
.read ({ success: setItemColumnValue });

function setItemColumnValue(results)
{
if (results.length === 0) {
// what should it do if there is no matching on table A?
// Assuming here that this is an error.
request.respond(statusCodes.BAD_REQUEST, { error: 'No matching item in table A' });
} else if (results.length === 1) {
item.tableA_id = results[0].id;
request.execute();
} else {
// what should it do if there are multiple matches on table A?
// Assuming here that this is an error.
request.respond(statusCodes.BAD_REQUEST, { error: 'Multiple matches in table A' });
}
}
}

关于Azure 移动服务器脚本 - 从另一个表获取列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16312861/

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