NodeJS:如何在为OrientDB编写模型类时改进错误处理

时间:2015-06-16 19:56:22

标签: javascript node.js express orientdb oriento

我正在构建一个小型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...

0 个答案:

没有答案