Code.org——在数据库中搜索正确的日期,然后将其添加到列表中

问题描述 投票:0回答:1

我正在为学校做一个项目,并且即将完成。我需要 code.org 在我的数据库中搜索在设定的日期发生的习惯。 (一周中的几天)然后放入列表中,然后显示到名为“TodaysHabits”的元素中,下面是我的代码。请注意,我只能使用 ES5 中的函数或经过 code.org 团队批准的函数(不能推送或弹出)

差点忘记这些变量了

var DateNum = new Date().getDay();
var DaysOfTheWeek = ["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];
var Day = DaysOfTheWeek[DateNum];

onRecordEvent("Habit Data", function(records) {
    if (records.length == 0) {
      setText("TodaysHabits","Today's Habits" + "\n" + "No Habits to check");
    } else {
      readRecords("Habit Data", {Day:true}, function(records) { 
        if(records.length>0){
          for (var i =0; i < records.length; i++) {
            appendItem(TodayHabitList, record[i]);
          }
          setText("TodaysHabits","Today's Habits:"+"\n"+TodayHabitList.join("\n"));
        }
        else if(TodayHabitList.length==0) {
          setText("TodaysHabits","Today's Habits:"+"\n"+"No Habits scheduled today");
        }
      });
    }
},true);

最后一行有一个“,true”的原因是为了在code.org数据库中所有现有的习惯上使用该程序。

我已经重写了这段代码至少 10 次,每次都比上一次稍微好一些。我没有保存它们(可怕的错误)并且没有它可供参考。

这是我的项目的链接我的 Code.org 项目 CSV 为“id、名称、描述、时间、星期日、星期一、星期二、星期三、星期四、星期五、星期六”

我忘了添加我要询问的部分是第142 - 158行

javascript database search ecmascript-5 code.org
1个回答
0
投票

一些改进

研究函数 onRecordEvent 的 Code.org 文档。

onRecordEvent(table, eventType)

第一个参数是单个记录。第二个参数是一个 eventType,它告诉您记录发生了什么:

create
update
delete
。您的代码错误地使用了事件,这是问题的一部分。

接下来,研究 readRecords 的文档。

 readRecords(table, terms, callback) 

terms 是用于过滤数据的

key:value
对的对象。例如,对于所有星期五的习惯,它将是
{friday: true}
或对于星期五和星期六
{friday: true, saturday: true}
。您的代码错误地使用了 {Day: true}。但是,Day 与数据库中的任何列名都不匹配,因此不会返回任何内容。

我们可以通过添加一个读取数据库并更新UI的函数来解决这些问题,如下所示。您开始在应用程序的更高版本中执行此操作。但是,它需要是一个单独的函数,而不是 onRecordEvent 的一部分。这样我们就可以在需要更新 UI 时调用它。

注意我们如何创建术语值来过滤数据。在普通的 JavaScript 中,我们可以像

terms = {[Day]: true}
那样更直接地做到这一点(参见:括号符号)。然而,在 Code.org 中,我们必须首先创建一个对象
terms = {};
,然后附加键
terms[Day] = true;
,它会生成类似
{friday: true}
的值。这样我们的
readRecords
将仅返回与当前星期几匹配的记录。

代码:

// update the UI when the app starts
showToday();

// update the UI when a record is added, updated, or deleted
onRecordEvent("Habit Data", function(record, eventType) {
      showToday();
});

// UI update
function showToday() {
  // Create a data filter based on the day-of-the-week.
  var terms = {};
  terms[Day] = true;
  readRecords("Habit Data", terms, function(records) {
    TodayHabitList = [];
    for(var i = 0; i < records.length; i++) {
      TodayHabitList.push(records[i].time + " - " + records[i].name);
    }
    setText("TodaysHabits", Day + " Habits:\n" + TodayHabitList.join("\n"));
   });
}

块: 如 Code.org IDE 中所示

© www.soinside.com 2019 - 2024. All rights reserved.