如何使用JsStore填充 IndexedDB 中的DateTime列

kse8i1jr  于 2023-09-28  发布在  IndexedDB
关注(0)|答案(1)|浏览(218)

这是我的table:

{
  name : "TEST",
  columns : {
    K_A : {dataType : "string"},
    DT_VAL : {dataType : "date_time"},
    DT_SENT : {dataType : "date_time"},
    pk: {
      primaryKey: true,
      keyPath: ['K_A', 'DT_VAL']
    },
    sent: {
      keyPath : ["DT_SENT"]
    }               
  }
}

我完全无法在这个表中插入记录。我不知道日期时间列的格式。我尝试了几乎所有的解决方案:new Date();Date.now(),new Date().toISOString(),new Date().toGMTString(),new Date().toUTCString(),new Date().toString()...什么都没用。

dt=new Date().toISOString();
record={
  K_A:"A", 
  DT_VAL: dt,
  DT_SENT: dt 
};
    
// Using jsStore
db.connection.insert({
  into: "TEST",
  upsert:true
  values : record,
  validation: false
});

不管我做什么,我都得到了这个:
Uncaught(in promise)Object { message:“提供给操作的数据不符合要求。”,键入:“DataError”}
编辑:最终异步JS代码从代码部分滑出,并更正了keyPath。

falq053o

falq053o1#

问题似乎来自于使用KeyPath。
(请注意,在我的帖子中,键盘路径是['K_A','DT_TRACE'],但在我的代码中它是正确的:['K_A','DT_VAL'],只是一个复制/剪切错误,而发布)
无论如何,删除keypath并使用new Date()是可行的。

{
        name : "TEST",
        columns : {
            K_A : {primaryKey: true, dataType : "string"},
            DT_VAL : {primaryKey: true, dataType : "date_time"},
            DT_SENT : {dataType : "date_time"},
        }
    }

    record={ K_A:"A", 
             DT_VAL: new Date(),
            DT_SENT: new Date() 
            };
   // Using jsStore 
   db.connection.insert({ into: "TEST", upsert:true values : record, validation: false});

相关问题