0

如果您使用的是 SQL 数据库,则为 CRUD 操作开发用户界面非常简单。由于定义了模式,很明显您需要在表单中输入多少等。

但是,当使用无模式 NoSQL 方法进行存储时,您如何构建接口,因为您不知道对所存储数据类型的确切期望是什么?例如,如果您有一个汽车数据库:

var cars = [

{ model: "BMW", color: "Red", manufactured: 2016 },

{ model: "Mercedes", type: "Coupe", color: "Black", manufactured: “1-1-2017” }

];

如果您需要创建一个用户界面以便您可以访问和编辑此数据,那么您不知道需要多少输入,因为没有架构。UI 开发人员如何解决这个问题?

在显示正确的输入之前,您是否有一堆if语句来测试记录中是否存在每个可能的属性?

// psuedo code
if ($car.hasKey("model") ) {
  // Show the "Model" input form element
}

if ($car.hasKey("type") ) {
  // Show the "Type" input form element
}

if ($car.hasKey("color") ) {
  // Show the "Color" input form element
}

if ($car.hasKey("manufactured") ) {
  // Show the "Manufactured" input form element
}
4

1 回答 1

0

如果您需要创建一个用户界面以便您可以访问和编辑此数据,那么您不知道需要多少输入,因为没有架构。UI 开发人员如何解决这个问题?

您可以通过根据功能需求进行推理来解决此问题。需要强调的是,您不要尝试从模式生成表单(自动或以其他方式):即使您手头确实有一个全面、规范和明确的模式,这也会导致糟糕的用户体验。

相反:你知道你的“用例”是什么(你问用户),然后你就可以准确地构建那些.

于是问题就变成了:

  1. 当您的数据项/实例不包含您所期望的特定对象/字段/键时,您会怎么做?
  2. 当您的实例包含您知道如何处理的字段时,您会怎么做?

#1 的答案非常简单,基本上与处理模式更改相同:假设/呈现合理的默认值或优雅地处理空值。也就是说:允许您的用户稍后在有意义的地方添加此类字段,并且不要因缺少它们的对象而窒息。

#2 的答案更复杂,它将在很大程度上取决于应用程序及其环境(例如:它是数据的唯一消费者,还是还有其他消费者需要考虑)。一种选择可能是规范化:您在保存时修剪这些无关字段,因此随着用户更新对象,它们会随着时间的推移而变得规范化。另一种方法可能是保存:您保留任何您不知道的字段,并在应用程序的每一层都努力保存它们。

于 2017-03-09T21:21:55.070 回答