如何处理无SQL数据库中缺乏形状规范化的问题

时间:2018-10-11 18:35:29

标签: angular typescript firebase nosql

我正在使用Firebase数据库。我已经被分配了任务:将所有从数据库返回的时间戳对象转换为日期对象。

我对Firebase等无SQL数据库并不熟悉。但是我知道没有对所有记录进行标准化的数据形状。这给我带来了一个问题,我不必担心在SQL数据库中。 而在SQL数据库中,如果返回一条没有时间戳的记录,我可以保证同一张表中的任何记录都没有时间戳。但这不能保证像Firebase这样的无SQL数据库。

所以,如果一条记录回来像这样:

{
id: 123,
name: George Smith,
age: 42
}

我怎么知道其他记录不会像这样出现:

{
id: 123,
name: George Smith,
age: 42,
createdDate: {…}
updatedDate: {…}
}

给我分配任务(将时间戳转换为Date对象),开发人员如何处理这种情况?

我正在使用Angular / Typescript开发

1 个答案:

答案 0 :(得分:1)

首先,“无形” nosql并不意味着您不能对每个记录中的内容进行假设。可以编写代码来确保仅写入有效和完整的数据,并允许您在读取数据时对数据进行假设。那是处理事情的第一个最佳方法。

但是,如果您绝对必须假设任何记录中的任何字段都可能是时间戳,则必须编写代码以递归方式递减每个记录的属性,查找看起来像时间戳的对象,并根据需要将它们全部转换。您可以通过检查对象是否具有toDate方法来判断它是否是时间戳。