具有复杂字段类型的 Azure 移动服务器更新脚本

Azure Mobile server update script w/ complex field type

我有一个复杂的数据类型 "AzureTemplate",其中包含 children "AzureField" 的列表。我已经根据 this article 在服务器端实现了读取和插入。效果很好。

我也需要更新,所以我 copy/pasted 插入到更新中,所以它做同样的事情,但使用更新代替。所以我的更新看起来像这样:

function update(item, user, request) {     
// remove complex child object, make copy first
var fields = item.fields;
if (fields) {
    delete item.fields;
}
request.execute({
    success: function () {  
        var templateId = item.id; // "foreign key" 
        var fieldsTable = tables.getTable('AzureFields');
        if (fields) {
            // update the child fields
            var updateNextField = function (index) {
                if (index >= fields.length) {
                    // done updating fields, respond to client
                    request.respond();
                } else {
                    var field = fields[index];
                    field.templateId = templateId;

                    // *** THE ID LOGGED HERE LOOKS FINE ***
                    console.log("updating field w/ id ", field.id);
                    fieldsTable.update(field, {
                        success: function () {
                            updateNextField(index + 1);
                        }
                    });
                }
            };

            // kick off the loop saving each field
            updateNextField(0);

        } else {
            // no fields. no need to do anything else
            request.respond();
        }
    }
});
}

打印 child "field" ID 的日志显示了一个有效的字段 ID(我在读取它们时将它们保存在客户端)。但我收到一条错误消息:

Error in script '/table/AzureTemplate.update.js'. Error: Invalid id value specified.    AzureTemplate/update    Tue Jan 27 2015, 10:11:31 AM

我在 AzureField.update 的顶部放了一个 console.log(),但是它从来没有出现过,所以它没有进入那里。此外,当我直接从客户端更新单个 child "Field" 时,它工作正常。所以 AzureField.update 正在工作。有任何想法吗?

var fieldsTable = tables.getTable('AzureFields');

...我的 table 名字是 AzureField,而不是 AzureFields。上面的代码有效,希望对某人有所帮助。

我之前给 table 取了一个错误的名字,并且得到了一个关于 "table not existing" 的有意义的错误。不确定为什么这种情况下的错误完全无关。