九州编程
这么巧我刚刚写了一段这个代码,而且写得我自己挺满意,share一下其中的逻辑:1、update的封装functionupdateRecord(model,obj,criteria,callback){varsql='update??set?where';varoptions=[model.name,obj],link='';for(varkeyincriteria){options.push(key);options.push(criteria[key]);sql+=link+'??=?';link='and';}sql+=';';pool.query(sql,options,callback);}2、绑定到模型上functionsetModel(name){varmodel=require('./'+name);if('mysql'===model.type){model.insert=function(obj,callback){insertRecord(model,obj,callback);};model.remove=function(criteria,callback){removeRecord(model,criteria,callback);};model.update=function(obj,criteria,callback){updateRecord(model,obj,criteria,callback);};model.select=function(criteria,range,callback){selectRecord(model,criteria,range,callback);};}list[model.name]=model;}3、使用的一个例子:model.get('item_family').update(newData,{id:oldData.id},function(err,rows){if(err){asynEcho(pin,err);}elseif(!rows||rows.length<1){asynEcho(pin,'internalerror:nodataupdated');}else{showList();}});总的来说,适合你自己用的就是好的model。保留扩展的能力,但是不要一开始就试着写的大而全。