【问题标题】:Azure Storage - NodeJS - Can I Store Objects?Azure 存储 - NodeJS - 我可以存储对象吗?
【发布时间】:2017-03-02 10:39:43
【问题描述】:

The Azure Storage library for NodeJS 显示创建任务如下:

var azure = require('azure-storage');
var entGen = azure.TableUtilities.entityGenerator;
var task = {
  PartitionKey: entGen.String('hometasks'),
  RowKey: entGen.String('1'),
  description: entGen.String('take out the trash'),
  dueDate: entGen.DateTime(new Date(Date.UTC(2015, 6, 20))),
};

但是是否可以存储一个对象(例如,Like Stuff):

var azure = require('azure-storage');
var entGen = azure.TableUtilities.entityGenerator;
var task = {
  PartitionKey: entGen.String('hometasks'),
  RowKey: entGen.String('1'),
  description: entGen.String('take out the trash'),
  dueDate: entGen.DateTime(new Date(Date.UTC(2015, 6, 20))),
  stuff : { "abc" : "def", "ghi" : "jkl", "mno" : { "pqr" : "stf" }}
};

或者我需要 JSON.stringify 并将其存储为字符串?

【问题讨论】:

    标签: node.js azure azure-table-storage


    【解决方案1】:

    在您的情况下,stuff 是 JSON。表存储实体没有 JSON 类型。您需要进行字符串化,生成 String 类型。

    您还可以选择为 JSON 文档中的每个元素使用单独的属性(并且每个实体可以包含不同的属性 - 不强制执行架构;您只需要给自己一个关于存储对象类型的提示,以便您可以根据需要检索属性)。是的,当您继续嵌套 JSON 对象时,这会变得更加棘手,就像您的示例一样。

    仅供参考,所有受支持的表实体类型都列出了here

    【讨论】:

    • 第二项你说我能做到: stuff : { "abc" : entGen.String("def"), "ghi" : { "aaa" : entGen.String("w ") } } 还是您只是说我可以将它们全部移到顶层,意识到每个实体都不具有相同的属性?
    • 我是说你要么将整个 JSON 字符串化,要么将每个 JSON 属性存储为单独的 Table 实体字符串属性。没有 JSON 属性类型。
    猜你喜欢
    • 2011-02-15
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多