我的DynamoDB数据库中有一个表,其中包含一个作为Map列表的元素。每个Map item没有任何特定的结构。
我试着这样描述它:
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格式的字符串。
我该怎么做呢?
发布于 2018-02-18 07:44:27
好的,我遇到了一个类似的问题,我最终设法解决了这个问题,只针对具有特定结构的映射,即所有的条目都是相同类型的,通过查看dynamoose的测试并计算出语法。下面的代码将把addressHeld保存为dynamodb中的一个映射列表。
您可以从扫描中看到,您在查询时返回一个对象数组。
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。希望这能有所帮助。
https://stackoverflow.com/questions/47689824
复制相似问题