2013-06-17 4 views
0

Я собираюсь начать писать новый модуль для системы, которую я разрабатываю. Мы используем базу данных MySQL (поэтому я использую node-mysql), которая содержит таблицу customers.Шаблон модуля NodeJS

То, что я хочу достичь, это:

  • Вне модуля Я ищу сделать var C = new Customer(1) где 1 является идентификатор клиента.
  • Теперь, когда я хочу получить что-то от этого клиента, я могу сделать C.email или C.first_name, который просто вернет значение.
  • Я также должен быть в состоянии установить значение обратно на этом клиенте, C.email = '[email protected]' или, возможно:

    C.set('email', '[email protected]')

Что бы лучший образец для создания такой модели?

ответ

0

У меня уже есть что-то вроде этого ... Не совсем то, что вы требовали, но очень близко к этому я обобщил основную часть и вот code..Hope это поможет ....

var mysql = require('mysql'); 
var con = mysql.createConnection({ 
host:"yourHostName", 
user:"yourUserName", 
password:"yourPassword" 
}); 
con.query("use databaseName"); 
function getCustomerDetails(custId){ 
con.query("select * from customer where custId = "+custId,function(err,result,fields){ 
if(!err) 
    return result; 
else 
    console.log(err); 
}); 
} 
function updateCustomerDetails(custId,fieldName,fieldValue){ 
con.query("update customer set "+fieldName+" = "+fieldValue+" where custId =  "+custId,function(err,result,fields){ 
    if(!err) 
     return true; 
    else 
     console.log(err); 
     return false; 
}); 
} 
exports.getCustomerDetails = getCustomerDetails; 
exports.updateCustomerDetails = updateCustomerDetails; 

И тогда предположим, что вы сохранили модуль как dbAccessModule.js затем вы можете использовать функции как этот

var C = require('./dbAccessModule'); 
result = C.getCustomerDetails(1); 
console.log(result.fieldName); 

var success = C.updateCustomerDetails(1,'name','sumit');   
if(success) 
console.log('Table Updated successfully....'); 
else 
// take necessary action according to your application 

Одна вещь, вы должны позаботиться о том, что если вы обновляете любое поле со значением строки то пожалуйста не забывайте окружать значение fieldValue одинарными кавычками.

Если это не то, что вы просили, пожалуйста, игнорируйте его ....

0

Недавно я создал два модуля базы данных вы можете быть заинтересованы в проверке, чтобы увидеть, если они соответствуют вашим потребностям - ОРМ: http://bookshelfjs.org и Query Builder: http://knexjs.org

ОРМ базируется проектных моделей Backbone.js

Таким образом, вы были бы в состоянии сделать что-то вроде этого:

// Create the base customer object 
var Customer = Bookshelf.Model.extend({ 
    tableName: 'customers' 
}); 

// Create a new customer instance with an id of 1, fetch it, and then 
// act on the result model 'customer'. 
new Customer({id: 1}).fetch().then(function(customer) { 
    console.log(customer.get('name')) 
    customer.set('email', '[email protected]') 
    return customer.save(); 
}); 

Вы также можете расширить базовый класс клиентов для того, чтобы укороченный синтаксис, подобный тому, что вы ищете:

// Create the base customer object, with a static findOne method. 
var Customer = Bookshelf.Model.extend({ 
    tableName: 'customers' 
}, { 
    find: function(id) { 
    return new this({id: id}).fetch(); 
    } 
}); 

Customer.find(1).then(function(C) { 
    console.log(C.get('name')) 
    C.set('email', '[email protected]') 
}); 
Смежные вопросы