FAQ
¿Cuáles permisos IAM necesito para ejecutar Dynamoose?
El siguiente es un gráfico de permisos IAM que necesitas para ejecutar Dynamoose para ciertas acciones.
Acción de Dynamoose | Permiso IAM | Notas |
---|---|---|
nueva Tabla() | createTable , describeTable , updateTable , updateTimeToLive , describeTimeToLive , listTagsOfResource , tagResource , untagResource | createTable solo se usa si create está configurado como "true". describeTable solo se usa si waitForActive O create está configurado como "true". updateTable solo se usa si update está configurado como "true". updateTimeToLive & describeTimeToLive solo se usa si create o update está configurado como "true" y hay una configuración de expires en el modelo. listTagsOfResource , tagResource , untagResource solo se usan si update está configurado como "true" o incluye tags en la matriz de cadenas. |
table.initialize | ^ | Igual que nueva Tabla() |
table.create | createTable | Solo si la configuración return no es igual a request . |
Model.get | getItem | |
Model.batchGet | batchGetItem | |
Model.scan | scan | Este permiso solo está requerido en scan.exec |
Model.query | query | Este permiso solo está requerido en query.exec |
Model.create | putItem | |
Model.batchPut | batchWriteItem | |
Model.update | updateItem | |
Model.delete | deleteItem | |
Model.batchDelete | batchWriteItem | |
item.save | putItem | |
item.delete | deleteItem | |
dynamoose.transaction | transactGetItems , transactWriteItems |
¿Por qué se recomienda establecer opción create
, update
& waitForActive
del modelo en "false" para entornos de producción?
Ambas opciones de modelo create
, update
& waitForActive
añaden sobrecarga para crear instancias de modelo. En tu entorno de producción se asume que ya tienes las configuraciones de tablas para desplegar la aplicación lo que hace necesarias las opciones de create
, update
& waitForActive
.
¿Por qué están vacíos los arreglos u objetos cuando se usa Dynamoose?
Dynamoose requiere una estricta conformidad con tu esquema. Si los arreglos u objetos están vacíos, probablemente sea un caso de no haber definido el subesquema de ese atributo. Debe utilizar la propiedad schema
para definir cuál debe ser el subesquema de la matriz u objeto.
Por ejemplo, si tienes el siguiente esquema:
{
"id": String,
"names": {
"type": Array
}
}
Esto puede ser convertido a lo siguiente para decirle a Dynamoose qué tipos de elementos deben existir dentro de la matriz.
{
"id": String,
"names": {
"type": Array,
"schema": [String]
}
}
Adicionalmente, lo mismo funciona para objetos.
{
"id": String,
"address": {
"type": Object
}
}
A:
{
"id": String,
"address": {
"type": Object,
"schema": {
"zip": String,
"country": String
}
}
}
¿En qué orden Dynamoose maneja las acciones de los elementos?
A continuación se muestra una lista de cómo Dynamoose procesa las acciones de los elementos.
map
/alias
/aliases
mapeo de (toDynamo únicamente)- Comprobación de tipo
- Predeterminados
- Tipos personalizados
- DynamoDB Type Handler (ej. convertir conjuntos a valor correcto)
- Combinar
get
/set
modificadores- Nivel de esquema
get
/set
modificadores - Comprobación de validación
- Comprobación de validación del nivel de esquema
- Comprobación necesaria
- Comprobación de Enum
map
/alias
/aliases
mapeo (fromDynamo únicamente)
¿El objetivo de Dynamoose es ser compatible con Mongoose?
No. Aunque Dynamoose se inspiró en Mongoose, existen muchas diferencias entre los dos motores de base de datos. No tenemos el objetivo de una API totalmente compatible con Mongoose, aunque encontrará muchas similitudes. Algunas áreas de Dynamoose intentaremos no inspirarnos en Mongoose, y diseñarla a nuestra manera.
¿Puedo usar una propiedad, clase, método o función indocumentados en Dynamoose?
Definitivamente no. Cualquier cosa que no esté documentada en Dynamoose puede cambiar en cualquier momento sin una versión con cambios disruptivos, y el uso de cualquier cosa que no esté documentada puede conducir a un comportamiento inesperado. Si nota algo en la base de código interna que le gustaría hacer públicamente accesible para usar en sus propios servicios, por favor cree un PR o un problema para agregar documentación a él, y será revisado para asegurar que la funcionalidad es capaz de permanecer estable.
¿Dónde puedo encontrar información acerca del uso de Dynamoose con TypeScript?
Aquí.
¿Dónde puedo encontrar documentación para v2?
Aquí.
¿Dónde puedo encontrar documentación para v1?
Aquí.
¿Cómo migro de v1 a v2?
Vea las notas de lanzamiento para v2.0.0 para una lista de cambios disruptivos.