javascript - 在 couchdb 上构建数据的最佳方法是什么?

标签 javascript json ionic-framework nosql couchdb

为我的沙发数据库设计两种不同的结构,我想知道哪一种最适合我。

按类(class)列出的文档:

    {                   
  "_id": "e11b862c9939f9d0de39f3aa28036c96",
  "_rev": "4-e1245399d2f074ef5710d6bcbb0aa7f7",
  "nombre": "JavaScript",
  "descripcion": "curso basico de javascript",
  "horas": 50,
  "costo": 500000,
  "modalidades": [
    {
      "nombre": "online",
      "descripcion": "cursos en linea",
      "descuentos": [
        {
          "descuento": 0.2,
          "fecha caducidad": "2017-11-20"
        },
        {
          "descuento": 0.1,
          "fecha caducidad": "2017 - 12 - 30 "
        }
      ]
    },
    {
      "nombre": "privada",
      "descripcion": "cursos privados",
      "descuentos": [
        {
          "descuento": 0.2,
          "fecha caducidad": "2017-11-20"
        }
      ]
    }
  ]

我制作了一份独特的文档,其中保存类(class)、类(class)费用以及每门类(class)的折扣(具体取决于形式),我想知道这两种形式中的哪一种对管理更有用

{
  "_id": "e11b862c9939f9d0de39f3aa28034b9e",
  "_rev": "3-87278a7404c9f458be9beec1808aafb7",
  "cursos": [
    {
      "nombre": "Javascript",
      "descripcion": "curso basico de javascript",
      "horas": 50,
      "costo": 500000,
      "modalidad": [
        {
          "nombre": "online",
          "descripcion": "cursos en linea",
          "descuentos": [
            {
              "descuento": 0.2,
              "fecha caducidad": "2017-12-20"
            }
          ]
        },
        {
          "nombre": "privada",
          "descripcion": "cursos privados",
          "descuentos": [
            {
              "descuento": 0.15,
              "fecha caducidad": "2017-12-20"
            }
          ]
        }
      ]
    },
    {
      "nombre": "HTML5",
      "descripcion": "curso basico de HTML5",
      "horas": 60,
      "costo": 400000,
      "modalidad": [
        {
          "nombre": "online",
          "descripcion": "cursos en linea",
          "descuentos": [
            {
              "descuento": 0.3,
              "fecha caducidad": "2017-12-20"
            }
          ]
        },
        {
          "nombre": "privada",
          "descripcion": "cursos privados",
          "descuentos": [
            {
              "descuento": 0.2,
              "fecha caducidad": "2017-12-20"
            }
          ]
        }
      ]
    }
  ]
}

最佳答案

由于您没有提供任何关于您打算如何实际使用数据的线索,因此很难提供比一般建议更多的信息。然而...

遵循第一种方法通常更容易从 CouchDB/Cloudant 中获得良好的性能 - 每个类(class)都有一个单独的小文档,而不是一个包含所有类(class)数据的大文档。这取决于您的应用程序将展示的使用模式。我猜测类(class)数据很少会更改(有利于性能,并且冲突的可能性很小),并且应用程序主要需要按类(class)访问类(class)数据。

我会采用第一种方法,并构建一个 View 来按名称提供对所有类(class)的访问。这样,您就永远不需要加载所有类(class)数据来简单地公开有关您的 JavaScript 类(class)的数据。

关于javascript - 在 couchdb 上构建数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47066456/

相关文章:

javascript - 如何将动画应用于 Angular2 中具有基本组件的多个组件?

javascript - Nodejs 从数组表达流

android - 如何使用 Gson 正确序列化/反序列化 kotlin 中的复杂对象?

angular - Ionic 4透明透明接针

javascript - $routeParams 未定义

javascript - 无法在 Ionic Select 中预先选择最后一个选项

javascript - zoom.scaleExtent() 在 d3.js 中做了什么?

javascript - 如何一起使用 ExpressJS、VueJS、Jade?

node.js - SQLite3 Node.js JSON

c - 带有 json-c 库的 C 语言 JsonParser | json_object_object_get(...) 未声明