Я пытаюсь создать модульную и абстрактную группу функций для сохранения данных в моей базе данных Mongodb (Mongoose), используя Node JS, вот так:
const mongoose = require('mongoose')
mongoose.connect('xyz123blahblahblah')
const db = mongoose.connection
const Schema = mongoose.Schema
const ObjectId = Schema.ObjectId
var doc
var docInstance
// Connect to the database.
function connect() {
console.log('Establishing a connection.')
db.on('error', console.error.bind(console, 'Connection error:'))
db.once('open', function() {
console.log('Connection established.')
updateCollection()
})
}
function updateCollection(schemaName, schemaObject, schemaProperties) {
doc = mongoose.model(schemaName, schemaObject)
docInstance = new doc(schemaProperties)
}
function save() {
console.log('Saving document to the collection.')
docInstance.save(function (err, docInstance) {
if (err) { return console.error(err) }
else { console.log('Document was succesfully added.') }
})
}
Теперь идея в том, что позже я могуэкспортируйте эти функции и вызывайте их последовательно следующим образом:
// Define the Collection model.
const User = new Schema( { name: String, email: String, id: ObjectId} )
connect()
updateCollection('users', User, { name: 'Testy McTest', email: 'test@test.co' })
save()
Мне не имеет смысла передавать параметры для функции updateCollection () через функцию connect (), поскольку они по существу отвечают за дваболее или менее разные вещи, но моя функция updateCollection () должна вызываться ВНУТРИ моей функции connect ().
Идеальным решением для меня было бы иметь возможность делать следующее:
// Define the Collection model.
const User = new Schema( { name: String, email: String, id: ObjectId}
connect(updateCollection('users', User, { name: 'Testy McTest', email: 'test@test.co' }))
save()
Я немного растерялся, что делать дальше.Можно ли построить мои функции connect () и updateCollection () таким образом, чтобы обеспечить разделение интересов?Любая помощь будет высоко ценится!