我正在构建一个小型Node应用程序,因为我想使用OrientDB,所以我不能使用Mongoose等来处理我的数据/模型。所以我必须自己想出一些东西,我觉得很难,因为我还没有在Node.js中做过那么好的审查。
我使用oriento作为OrientDB的驱动程序。 Oriento的API基于bluebird promises。
这是我有多远。但我很确定必须有更好的方法来处理错误(例如'记录未找到')。
欢迎任何关于如何改进这一点的提示。也许甚至还有一个包,用于创建与我尚未找到的特定数据库绑定的模型。
./ utils的/ oriento.js
// instantiate it once and share in multiple places(models), since it offers
// connection pooling
// Connect to Database
var Oriento = require('oriento');
var orientserver = Oriento({
host: 'localhost',
port: 2424,
username: 'root',
password: 'password'
});
var db = orientserver.use({
name: 'database',
username: 'root',
password: 'password'
});
console.log('Using database: ' + db.name);
module.exports = db;
./模型/ user.js的
var db = require('../utils/oriento.js');
var User = function (data) {
this.data = {
username: data.username,
email: data.email
};
}
User.prototype.data = {}
User.findByUsername = function(username, callback){
db.select().from('users').where({username: username}).one()
.then(function (user) {
if (user === undefined) {
return callback(false);
} else {
callback(new User(user));
}
});
}
// add getters, setters, find etc...
module.exports = User;
./ app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// Models
// I KNOW this doesn't belong here.
// I just put it here for quick testing before writing any controllers
User = require("./models/user.js");
User.findByUsername('ole', function (user) {
if(user) {
console.log("my object: ", user);
} else {
console.log("Nothing found");
}
});
// etc...