保存前,请检查Chrome Storage扩展程序中的重复记录

时间:2014-01-08 09:44:40

标签: javascript google-chrome google-chrome-extension

我正在开发一个小的Chrome扩展程序,允许我将一些记录保存到chrome.storage然后显示它们。

我已经设法让设置和进程工作按照我的意愿(有点),但现在我想在保存任何记录之前添加一个重复的检查,而且我很难找到一个好的和清洁解决方案

这就是我现在想出来的:

var storage = chrome.storage.sync;

function saveRecord(record) {
  var duplicate = false;
  var recordName = record.name;

  storage.get('records', function(data) {
    var records = data.records;
    console.log('im here');

    for (var i = 0; i < records.length; i++) {
      var Record = records[i];
      if (Record.name === recordName) {
        duplicate = true;
        break;
      } else {
        console.log(record);
      }
    }

    if (duplicate) {
      console.log('this record is already there!');
    } else {
      arrayWithRecords.push(record);

      storage.set({ bands: arrayWithRecords }, function() {
        console.log('saved ' + record.name);
      });
    }
  });
}

我基本上在包含记录的数组上进行迭代,并检查name属性是否已存在。问题是它打破了基本设置并获得了功能 - 事实上,正确保存时会记录'im here'和相对记录对象,但它没有设置值。另外,一段时间后(通常在尝试使用基本的storage.get函数列出乐队之后),它会返回此错误:

  

对storage.get的响应出错:TypeError:无法读取属性   'name'为null

我猜这是由于该组的异步性质以及我的无能和它的工作,但我无法理解它以找到更好的选择。想法?

提前致谢。

0 个答案:

没有答案