我正在使用Node创建一个代码片段管理器,并将其作为一个学习项目来响应,我们可以在我工作的地方使用这个项目。
我以前用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
}});它的格式不是很完美,但本质上如何以相同的方式引用我的用户和类别呢?
发布于 2018-10-06 20:17:17
与Mongoose和MongoDB不同,Dynamoose和DynamoDB没有默认的_id属性。因此,在DynamoDB/Dynamoose中没有像Schema.Types.ObjectId这样的东西。
看起来,您想要做的事情类似于.populate。
就我的项目而言,我只是使用.get手动处理所有关联。
在上面的架构示例中,id属性将是您的主键。在DynamoDB中,主键必须是唯一的,否则它们将覆盖现有项(除非您设置了一些检查)。
从这里开始,我认为您可以构建一个系统,为每个文档生成id,然后通过该id将其关联起来。我通常对这个属性使用String s,但我认为它在技术上可以是任何受支持的DynamoDB属性类型。
希望这能让你开始工作。如果没有意义,或者如果你需要更多的帮助,可以随意评论。作为动力GitHub项目的一个成员,我非常活跃,所以也可以随意地在它们上创建问题或东西。我尝试每天检查一次堆栈溢出上的Dynamoose标记。我的联系方式也很容易找到。
祝你在动力之行好运,如果你遇到任何其他问题或有任何其他问题,请告诉我!!
发布于 2020-09-16 15:44:36
我猜你想要这样
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)
将返回“父”对象的所有数据,该对象包含用户数据。
https://stackoverflow.com/questions/52678866
复制相似问题