createRecord(table, record, callback) 创建表数据

功能分类: Data Applab JavaScript 少儿编程

在 Applab 表数据存储里,在指定名称的 table 表里,创建一条指定的 record 的记录,并指定操作结束后异步调用的 callback 回调函数。

为 APP 应用增加持久数据存储可以让你编写的程序成为一个真正的 APP 应用 - 像你平时使用的 APP 一样。我们使用的很多应用程序都是通过 “云端” 数据驱动的。通过使用这里的方法,你也可以开发一个 “云端” 数据驱动的应用。

第一次使用 Applab 表数据存储? 在这里 表数据存储 查看 Applab 表数据存储介绍以及使用方法。

传递的 record 参数必须是 javaScript object 对象变量或使用 {}: 定义的 javaScript object 对象。并且其中不能包含 id 属性(参考下面的代码示例)。读取的结果将作为参数传递给回调函数。一个 APP 应用只能访问在应用自己里面创建的数据。要查看 APP 里的表数据,在 Applab 页面点击并打开 数据 页面,在页面里会显示 APP 相关的所有数据表信息,点击数据表即可查看或修改表数据。

示例代码



// 创建表数据记录,并输出控制台日志
createRecord("Fav Foods", {name:'Sally', age: 15, food:"avocado"}, function(record) {
  console.log("I'm executed after the record has been created.");
  console.log("Record id: " + record.id + " created!");
});
console.log("I'm executed right after createRecord is called while the record is being created.");

示例代码:数据收集 收集喜欢的食物数据并存储到数据表里。


// 收集喜欢的食物数据并存储到数据表里。
textInput("nameInput", "What is your name?");
textInput("ageInput", "What is your age?");
textInput("foodInput", "What is your favorite food?");
button("submitButton", "Submit");

onEvent("submitButton", "click", function() {
  var favFoodData={};
  favFoodData.name = getText("nameInput");
  favFoodData.age = getNumber("ageInput");
  favFoodData.food = getText("foodInput");
  createRecord("fav_foods", favFoodData, function(record) {
    console.log("Record created with id:" + record.id);
    console.log("Name:" + record.name + " Age:" + record.age + " Food:" + record.food);
  });
});


语法规则


createRecord(table, record, function(record){
    // 在这里编写回调函数代码
  });

参数说明

名称 类型 必需 参数描述
table string Yes 指定表数据存储中的表名称。如果表名称不存在将创建新表。
record object Yes 指定要创建的表数据记录。必须是 javaScript object 对象变量或使用 {}: 定义的 javaScript object 对象。(参考下面代码。)
callback function No createRecord 调用完成后被异步调用执行的函数。一个包含新创建数据结果的对象参数将被传递给回调函数。数据结果包含一个唯一标识字段,可以在回调函数里通过 record.id 获取字段值。

返回值

没有返回值。但在 createRecord() 成功执行并创建数据后,新创建的数据会作为参数传递给 callback 回调函数,同时异步调用并执行回调函数。

提示说明

  • 传递的 JavaScript object 对象属性必须与 Applab 表数据存储里列名相一致。注意名称是大小写敏感的。
  • 在表数据存储里,重复的表记录是允许的。但每条记录都会有不同的 id 唯一标识值。
  • createRecord() 有一个异步 callback 回调函数,是因为它需要访问远程数据存储,并不会立刻获得返回结果。通过使用异步回调函数,主代码无需等待。请求结果返回后在这个回调函数里异步处理。
  • callback 回调函数可以是一个内联函数,也可以是在应用程序中单独定义并被 createRecord() 调用的函数。
  • 通常不要将包含异步调用的函数如:createRecord() ,放在循环里执行。因为循环里不会等异步调用结束才继续执行。
  • 通常与这些方法:readRecords()deleteRecord(),以及 updateRecord() 实现对表数据记录的查看、删除以及更新。

学习提高

在上面列出的 callback 回调函数之外,createRecord() 还可以额外设置一个错误处理回调函数。这个回调函数只有在 createRecord() 操作发生错误时才会生效。比如,表数据里的记录数到达最大值时,创建记录操作会失败,这时错误处理回调函数将被调用。如果操作成功,则错误处理回调函数不会被调用。

示例代码:数据收集 收集喜欢的食物数据并存储到数据表里。如发生异常错误,在页面记录异常信息。


// 收集喜欢的食物数据并存储到数据表里。如发生异常错误,在页面记录异常信息。
textInput("nameInput", "What is your name?");
textInput("ageInput", "What is your age?");
textInput("foodInput", "What is your favorite food?");
button("submit", "Submit");

onEvent("submit", "click", function() {
  var favFoodData={};
  favFoodData.name = getText("nameInput");
  favFoodData.age = getNumber("ageInput");
  favFoodData.food = getText("foodInput");
  createRecord("fav_foods", favFoodData, function(record) {
    textLabel("outputText", "Thanks!  Your responses got recorded.");
  }, function (error, status) {
    // 返回 403 状态码 数据表到达最大容量限制
    if (status == 403) {
      textLabel("outputText", "Sorry, it looks like our table is full.");
    } else {
      textLabel("outputText", "There was an error and we couldn't record your responses.");
    }
  });
});

语法规则:


createRecord(table, record, function(record){
    //onSuccess 成功回调代码
  }, function(error, status) {
    //onError 异常回调代码
});

查看更多少儿编程教程、JavaScript 介绍

返回文档首页