存储JSON的最佳方法,其中SQL似乎是不必要的

时间:2016-07-05 19:10:01

标签: mysql sql angularjs json

我创建了一个angularjs webapp,它允许您与大型JSON对象进行交互以更改屏幕配置。例如,单击按钮并...

{'open': true, 'color': 'red', 'beef': 'jerky'} 

更改为

{'open': true, 'color': 'blue', 'beef': 'cake'} 

...您所做的更改会反映在屏幕上的可见配置中。

我做了一个后端登录,允许人们在mySQL数据库中创建一个与他们的电子邮件相关联的帐户及其所有数据。

目标是用户创建JSON对象的配置,“保存”它,然后能够以后访问它。使用angularjs,我可能会把所有这些JSON解析成一个巨大的表,但是......

  • 我不需要用SQL查询JSON(数据仅被前端代码用作一个大块)
  • 我可能会改变JSON的结构方式/随着时间的推移有多少选项,我想这会让一个巨大的自定义表变得更加需要改变

对于我来说,将一大块JSON作为字符串存储在一列中会更好吗?这是不好的做法吗?理论上我是否会限制一个表格单元格中允许的stringlength?

2 个答案:

答案 0 :(得分:1)

对于动态配置JSON对象,强烈建议您解析它并将其存储为字符串。

当然,您可以在一个单元格中存储的字符串的最大长度,但它非常大(任何巨大的JSON对象都适合)。

希望这有帮助

答案 1 :(得分:1)

试图帮助......

您可以使用several NoSQL database types。我建议您使用文档存储数据库。我相信最常用的文档存储数据库是MongoDB

以下示例将JSON数据存储到MongoDB中。

MongoDB and NodeJS tutorial

//lets require/import the mongodb native drivers.
var mongodb = require('mongodb');

//We need to work with "MongoClient" interface in order to connect to a mongodb server.
var MongoClient = mongodb.MongoClient;

// Connection URL. This is where your mongodb server is running.
var url = 'mongodb://localhost:27017/my_database_name';

// Use connect method to connect to the Server
MongoClient.connect(url, function (err, db) {
  if (err) {
    console.log('Unable to connect to the mongoDB server. Error:', err);
  } else {
    //HURRAY!! We are connected. :)
    console.log('Connection established to', url);

    // Get the documents collection
    var collection = db.collection('users');

    //Create some users
    var user1 = {name: 'modulus admin', age: 42, roles: ['admin', 'moderator', 'user']};
    var user2 = {name: 'modulus user', age: 22, roles: ['user']};
    var user3 = {name: 'modulus super admin', age: 92, roles: ['super-admin', 'admin', 'moderator', 'user']};

    // Insert some users
    collection.insert([user1, user2, user3], function (err, result) {
      if (err) {
        console.log(err);
      } else {
        console.log('Inserted %d documents into the "users" collection. The documents inserted with "_id" are:', result.length, result);
      }
      //Close connection
      db.close();
    });
  }
});