更新函数在 Azure 移动库中C++损坏

Update function broken in C++ Azure Mobile Library

本文关键字:C++ 损坏 移动 函数 Azure 更新      更新时间:2023-10-16

我正在尝试使用 Azure 移动C++标头中的"update"函数更新我的一个 Azure 移动表中的记录。 但我有一个例外。 下面是我的代码的样子:

void DBUtils::DBQuestion::UpdateQuestionInTable(std::shared_ptr<azure::mobile::table> table)
{
       auto obj = json::value::object();
       obj[U("id")] = json::value::string(ID);
       obj[U("QuestionText")] = json::value::string(QuestionText);
       obj[U("AnswerLatitude")] = json::value::number(AnswerLatitude);
       obj[U("AnswerLongitude")] = json::value::number(AnswerLongitude);
       table->update(obj);
}

我已经验证了上面的ID是表中实际存在的有效ID。 类似的插入操作(未指定 ID 字段)实际上成功:

void DBUtils::DBQuestion::InsertIntoTable(std::shared_ptr<azure::mobile::table> table)
{
       auto obj = json::value::object();
       obj[U("QuestionText")] = json::value::string(QuestionText);
       obj[U("AnswerLatitude")] = json::value::number(AnswerLatitude);
       obj[U("AnswerLongitude")] = json::value::number(AnswerLongitude);
       table->insert(obj);
}

我做错了什么?

Azure Mobile 最近更新了其表架构,以便 Id 字段现在是一个字符串,如果客户端未设置它,服务器将使用 Guid 值填充该字段。

此更改在C++库中引入了一个错误。 作为解决方法,您可以尝试调用另一个重载进行更新,即采用 ID 字符串和对象的重载。

void DBUtils::DBQuestion::UpdateQuestionInTable(utility::string_t id, std::shared_ptr<azure::mobile::table> table)
{
    auto obj = json::value::object();
    obj[U("QuestionText")] = json::value::string(QuestionText);
    obj[U("AnswerLatitude")] = json::value::number(AnswerLatitude);
    obj[U("AnswerLongitude")] = json::value::number(AnswerLongitude);
    ID = id;
    table->update(ID, obj);
}