Ваш путь выглядит отлично.
Убедитесь, что при появлении ошибки вы вернетесь:
if (err) {
return callback(err)
}
или просто используйте другое, как вы делаете.
Просто ради критики вот что я делаю:
var db = require(__dirname + '/myDatabaseInstance.js');
var create = function (vals, next) {
db.query('Insert INTO users SET ?', vals, next);
};
var load = function (selector, next) {
db.query('SELECT * FROM users WHERE ?', selector, function (err, vals) {
if(err) {
return next(err);
}
//at this point you could return a user object
//next(new User(vals[0]));
//or just return the array.
next(null, vals);
});
};
module.exports = create;
module.exports = load;
Я называю это так
var User = require(__dirname + '/user.js');
User.load({'id' : 1}, function (err, vals) {
if (err) throw err;
console.log(vals);
});
Мое личное предпочтение - не использоватьэкземпляры для моих моделей.Я обнаружил, что это стало грязно, когда у меня были отношения.
Например, скажем, у вас есть блог с сообщениями, которые хранятся в отдельной таблице, связанной с пользователем.Соблазнительно сделать объект User массивом постов.Теперь, если вы измените этот массив сообщений, вы должны помнить, чтобы сохранить измененного пользователя в базе данных.Я продолжал забывать, поэтому я просто перестал использовать экземпляры.