好的,所以我遇到了类似的问题,我最终设法仅针对具有特定结构的地图解决了该问题,即通过查看 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 不知道如何处理它们,因此它将它们存储为字符串,这是通过将列表类型设置为“对象”来实现的
您可以查看 api 中的 attributeToDynamo,但如果对象是完全随机的,我不确定您是否能够在 dynamoose 中做您想做的事情。
如果一切都失败了,你总是可以退回到原始的 aws-sdk。希望这可以帮助。