Search code examples
node.jsamazon-dynamodbdynamoose

How to delete a table using dynamoose


How do you delete a table in dynamoose?

For example is there a Model.deleteTable() function?


Solution

  • I suggest creating a small module where you add additional configuration for your dynamoose import.

    const dynamo = require('dynamoose')
    const constants = require('../constants')
    
    let oldModelFunction = dynamo.model
    
    dynamo.model = function () {
        let compiledModel = oldModelFunction.apply(this, arguments)
        let name = compiledModel.$__.name
        compiledModel.modelName = name.toLowerCase()
    
        // Add deleteTable method
        compiledModel.deleteTable = () => {
            return new Promise((resolve, reject) => {
                dynamo.ddb().deleteTable({ TableName: compiledModel.$__.name }, (err, resp) => {
                    if (err) reject(err)
                    else resolve(resp)
                })
            })
        }
    
        return compiledModel
    }
    
    module.exports = dynamo
    

    You can then create a model and use it like so:

    const dynamo = require('./mydynamoose')
    
    const Schema = dynamo.Schema
    
    let UserSchema = new Schema({
        username: String,
        name: String,
        age: Number
    })
    
    const User = dynamo.model("User", UserSchema)
    
    User.deleteTable().then(res => {
        // Check response
    }).catch(err => {
        console.log(err)
    })