Эквивалент Schema.Types.ObjectId в Dynamoose - PullRequest
0 голосов
/ 06 октября 2018

Я создаю менеджер сниппетов, используя Node и React, просто как учебный проект, который мы могли бы использовать там, где я работаю.

Я уже настроил его ранее, используя Express, Mongoose иMLAB.С мыслью о том, что нужно учиться и бросать вызов самому себе, я хотел перейти на использование DynamoDB от AWS.

Я нашел Dynaamoose, который будет очень полезен, поскольку API почти идентичен Mongoose.Тем не менее, я не могу понять, как воссоздать то, что делает 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
}});

Это не отформатировано идеально, но, по сути, как я могу получить это, чтобы ссылаться на моего пользователя и мою категорию втак же?

1 Ответ

0 голосов
/ 06 октября 2018

В отличие от Mongoose и MongoDB, Dynamoose и DynamoDB не имеют свойства _id по умолчанию.Поэтому в DynamoDB / Dynamoose нет такой вещи, как Schema.Types.ObjectId.

Похоже, что вы хотите сделать, это что-то вроде .populate.

Личнодля моих проектов я просто обрабатываю все ассоциации вручную, используя .get.

В приведенном выше примере схемы свойство id будет вашим первичным ключом.В DynamoDB первичные ключи должны быть уникальными, иначе они будут переопределять существующий элемент (если вы не поставите некоторые проверки на месте).

Здесь я думаю, что вы можете создать систему для генерации идентификаторов для каждого из ваших документов,а затем просто связать его через этот идентификатор.Я обычно использую String для этого свойства, но я думаю, что технически это может быть любой поддерживаемый тип свойства DynamoDB.

Надеюсь, это поможет вам начать.Не стесняйтесь комментировать, если это не имеет смысла или если вам нужна дополнительная помощь.Я довольно активен как участник Dynamoose GitHub Project , так что не стесняйтесь создавать проблемы или делать что-то для них.Я пытаюсь проверять тег Dynamoose на переполнении стека один раз в день.Мою контактную информацию также довольно легко найти.

Удачи в переезде в Динамо и сообщите мне, если у вас возникнут какие-либо другие проблемы или у вас возникнут другие вопросы !!

...