相当于Dynamoose中的Schema.Types.ObjectId

时间:2018-10-06 12:02:25

标签: node.js express amazon-dynamodb dynamoose

我正在使用Node和React创建一个片段管理器,这只是一个学习项目,我们可以在我的工作场所使用它。

我以前使用Express,Mongoose和mLab对其进行了设置。本着学习和挑战自我的心态,我想转向使用AWS的DynamoDB。

我发现Dynaamoose会很有帮助,因为API几乎与猫鼬相同。但是,我似乎无法弄清楚如何重新创建Schema.Types.ObjectId。

const SnippetSchema = new Schema({
id: {
    type: String,
    default: shortid.generate(),
    hashKey: true
},
user: {
    type: Schema.Types.ObjectId,
    ref: 'users'
},
category: {
    type: Schema.Types.ObjectId,
    ref: 'categories'
},
code: {
    type: String,
    required: true
},
title: {
    type: String,
    required: true
}});

它的格式不是很完美,但从本质上讲,我该如何以相同的方式引用我的用户和类别?

2 个答案:

答案 0 :(得分:0)

与Mongoose和MongoDB不同,Dynamoose和DynamoDB没有默认的_id属性。因此,在DynamoDB / Dynamoose中没有Schema.Types.ObjectId这样的东西。

您似乎想做的事情类似于.populate

就我的项目而言,我只是使用.get手动处理所有关联。

在上面的架构示例中,id属性将是您的主键。在DynamoDB中,主键必须唯一,否则它们将覆盖现有项(除非您进行了一些检查)。

我认为从这里开始,您可以构建一个系统来为每个文档生成ID,然后通过该ID进行关联。我通常将String用作此属性,但从技术上讲,我认为它可以是任何受支持的DynamoDB属性类型。

希望这可以帮助您入门。如果没有意义或需要更多帮助,请随时发表评论。作为Dynamoose GitHub Project的成员,我非常活跃,因此随时可以在上面提出问题或提出建议。我尝试每天检查一次Stack Overflow上的Dynamoose标签。我的联系信息也很容易找到。

向Dynamoose迁移的过程中祝您好运,如果您遇到任何其他问题或有任何其他问题,请告诉我!

答案 1 :(得分:0)

我想你想要这样:

const SnippetSchema = new Schema({
   id: {
     type: String,
     default: shortid.generate(),
     hashKey: true
   },
   parent: User,
   category:{
     type: String,
     required: true,
     index: {
       global: true
     }
   },
   code: {
     type: String,
     required: true
   },
   title: {
     type: String,
     required: true
   }
});

所以当.get(id)

将返回带有名为“ parent”的对象的所有数据,该对象包含用户数据