Em là new bie về node js em có viết một đoạn về mvc trong node js, bản thân nhận thấy có một số lũng cũng mong các cao nhân optimize giúp.
Code như sau
Phần model
var express = require('express')
, router = express.Router()
router.post('/:cmd', function (req, res) {
var cmd=req.params.cmd;
var sqlite3 = require('sqlite3').verbose();
var repository = "testDB.db";
var db = new sqlite3.Database(repository);
var tbl="hs";
switch (cmd) {
case 'max_id':
var sql="select * from "+tbl;
db.all(sql,function(err,rows){
if(err) throw err;
var max=-1;
for(var x in rows){
if( rows[x].id > max ){
max=rows[x].id;
}
}
res.json({max:max});
});
break;
case 'lds':
var sql="SELECT * from "+tbl;
db.all(sql,function(err,rows){
if(err) throw err;
res.json({ds:rows});
})
break;
case 'del':
var r=req.body;
var sql=[
'delete from '+tbl,
' where id=? ',
].join('');
var data=[r.id];
db.run(sql,data,function(err){
if(err){
throw err;
}
res.json({msg:'delok'})
})
break;
case "add":
var r=req.body;
var data=[r.id,r.name,r.tuoi,r.dia_chi,r.luong];
var sql=[
'insert into '+tbl,
' values (?,?,?,?,?) ',
].join('');
db.run(sql,data,function(err){
if(err){
throw err;
}
res.json({msg:'addok'});
})
break;
}//end switch
})
module.exports = router
Phần view
<% layout('layout1') -%>
<h3>this is vdmodel index</h3>
<script>
var url = "<%=base_url+'/api/hs'%>";
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope,$http) {
$scope.msg = "hello world";
$scope.lds = function () {
var promise = $http({
url: url + "/lds",
method: "POST",
headers: { 'Content-Type': 'application/json' },
});
return promise;
};
$scope.del = function (id) {
var promise = $http({
url: url + "/del",
method: "POST",
headers: { 'Content-Type': 'application/json' },
data: {id:id},
});
return promise;
};
$scope.add = function (r) {
var promise = $http({
url: url + "/add",
method: "POST",
headers: { 'Content-Type': 'application/json' },
data:r,
});
return promise;
};
$scope.max_id = function () {
var promise = $http({
url: url + "/max_id",
method: "POST",
headers: { 'Content-Type': 'application/json' },
});
return promise;
};
$scope.lds().then(function(res){
$scope.ds=res.data.ds;
})
$scope.on_del=function(e){
var id=e.target.id;
$scope.del(id).then(function(res){
var msg=res.data.msg;
if(msg=='delok'){
$scope.lds().then(function (res) {
$scope.ds = res.data.ds;
})
}
})
}
$scope.on_add=function(){
$scope.max_id().then(function(res){
var max=res.data.max;
$scope.msg=max;
var hs={
id:max+1,
name:'thuc71',
tuoi:11,
dia_chi:'htp',
luong:1.11,
}
$scope.add(hs).then(function(res){
var msg=res.data.msg;
if (msg == "addok") {
$scope.lds().then(function (res) {
$scope.ds = res.data.ds;
})
}
})
})
}
});
</script>
<div ng-app="myApp" ng-controller="myCtrl">
{{msg}}<br>
<ul>
<li ng-repeat="x in ds">
{{x}}
<button id="{{x.id}}" ng-click="on_del($event);">del</button>
</li>
</ul>
<button ng-click="on_add();">add</button>
</div>
kết quả
first screen
add screen
del screen
thank