我正在使用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
}});
它的格式不是很完美,但从本质上讲,我该如何以相同的方式引用我的用户和类别?
答案 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”的对象的所有数据,该对象包含用户数据