0

開発中のシステム用の新しいモジュールの作成を開始しようとしています。node-mysqlテーブルを含むMySQLデータベースを使用しています(だから私は使用しています) customers

私が達成したいことは次のとおりです。

  • 私が探しているモジュールの外では、顧客IDはvar C = new Customer(1)どこにありますか。1
  • この顧客から何かを取得したい場合、単に値を返すC.emailorを実行できます。C.first_name
  • また、この顧客の値を元に戻す必要があるか、C.email = 'example@example.com'または次のようにする必要があります。

    C.set('email', 'example@example.com')

そのようなモデルを作成するのに最適なパターンは何ですか?

4

2 に答える 2

0

私はすでにこのようなものを持っています...あなたが要求したものとはまったく異なりますが、それに非常に近いコア部分を一般化しました。これがコードです..これが役立つことを願っています....

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

注意が必要なことの 1 つは、文字列値でフィールドを更新する場合、fieldValue の値を一重引用符で囲むことを忘れないことです。

これがあなたが求めたものでない場合は、無視してください....

于 2013-06-17T11:34:16.587 に答える
0

私は最近、ORM: http://bookshelfjs.orgと Query Builder: http://knexjs.orgの 2 つのデータベース モジュールを作成しました。

ORM は 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@example.com')
  return customer.save();
});

基本 Customer クラスを拡張して、探しているものと同様の短縮構文を有効にすることもできます。

// 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@example.com')
});
于 2013-06-26T19:52:34.193 に答える