nodejs/nodejs-guestbook/src/backend/routes/messages.js (53 lines of code) (raw):
const mongoose = require('mongoose')
const GUESTBOOK_DB_ADDR = process.env.GUESTBOOK_DB_ADDR;
const mongoURI = "mongodb://" + GUESTBOOK_DB_ADDR + "/guestbook"
const db = mongoose.connection;
db.on('disconnected', () => {
console.error(`Disconnected: unable to reconnect to ${mongoURI}`)
})
db.on('error', (err) => {
console.error(`Unable to connect to ${mongoURI}: ${err}`);
});
db.once('open', () => {
console.log(`Connected to ${mongoURI}`);
});
const connectToMongoDB = async () => {
await mongoose.connect(mongoURI, {
useNewUrlParser: true,
connectTimeoutMS: 2000,
useUnifiedTopology: true
})
};
const messageSchema = mongoose.Schema({
name: { type: String, required: [true, 'Name is required'] },
body: { type: String, required: [true, 'Message Body is required'] },
timestamps: {}
});
const messageModel = mongoose.model('Message', messageSchema);
const construct = (params) => {
const name = params.name
const body = params.body
const message = new messageModel({ name: name, body: body })
return message
};
const save = (message) => {
console.log("saving message...")
message.save((err) => {
if (err) { throw err }
})
};
// Constructs and saves message
const create = (params) => {
try {
const msg = construct(params)
const validationError = msg.validateSync()
if (validationError) { throw validationError }
save(msg)
} catch (error) {
throw error
}
}
module.exports = {
create: create,
messageModel: messageModel,
connectToMongoDB: connectToMongoDB
}