首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >架构中地图的动态列表

架构中地图的动态列表
EN

Stack Overflow用户
提问于 2017-12-07 15:31:44
回答 1查看 3.6K关注 0票数 4

我的DynamoDB数据库中有一个表,其中包含一个作为Map列表的元素。每个Map item没有任何特定的结构。

我试着这样描述它:

代码语言:javascript
运行
复制
const schema = new dynamoose.Schema({
  Id: {
    type: String,
    hashKey: true,
    required: true
  },
  Name: {
    type: String,
    required: true
  },
  Content: {
    type: 'list',
    list: [Map]
  }
},
{
  useNativeBooleans: true,
  useDocumentTypes: true,
  saveUnknown: true
})

但是,Content中的每一项都等于{}。当将list: [Map]更改为list: [String]时,我可以检索数据,但我希望使用Json格式,而不是包含DynamoDB Json格式的字符串。

我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2018-02-18 07:44:27

好的,我遇到了一个类似的问题,我最终设法解决了这个问题,只针对具有特定结构的映射,即所有的条目都是相同类型的,通过查看dynamoose的测试并计算出语法。下面的代码将把addressHeld保存为dynamodb中的一个映射列表。

您可以从扫描中看到,您在查询时返回一个对象数组。

代码语言:javascript
运行
复制
var Address = dynamoose.model('Address', {
    HouseNumber: {
        type: Number,
        hashKey: true
    },
    Postcode: {
        type: String,
        rangeKey: true
    }
}, { useDocumentTypes: true });

var dogSchema = new dynamoose.Schema({
    ownerId: {
        type: Number,
        hashKey: true
    },
    address: {
        type: 'list',
        list: [
            {
                HouseNumber: { type: Number, require: true },
                Postcode: { type: String, require: true },
            }
        ],
        require: true
    },
}, { useDocumentTypes: true });

var Dog = dynamoose.model('Dog', dogSchema, options);

var Address1 = new Address(
    {
        HouseNumber: 1,
        Postcode: "LS114RF"
    });
var Address2 = new Address(
    {
        HouseNumber: 2, Postcode: "NN22NX"
    });

var odie = new Dog({
    ownerId: 1,
    address: [Address1, Address2]
});

odie.save(function (err) {
    if (err) { return console.log(err) }
    console.log('Ta-da!');
});


Dog.scan().exec((err, dog) => {
    console.log(dog);
});

你可以保存一个地图列表,但是dynamoose不知道如何处理它们,所以它将它们存储为字符串,这是通过将列表类型设置为'Object‘来实现的

你可以看看api中的attributeToDynamo,但是如果对象是完全随机的,我不确定你是否能够在dynamoose中做你想做的事情。

如果所有其他方法都失败了,您总是可以回退到原始的aws-sdk。希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47689824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档