วันจันทร์ที่ 22 กันยายน พ.ศ. 2557

angularJS ดึงข้อมูลใส่ table แล้ว filter ตามคำที่ใส่ใน textbox


เริ่มจาก สร้าง project แบบ MVC ใน VS2013
จากนั้น เข้า NuGet ติดตั้ง angularJS

<script src="~/Scripts/angular.js"></script>
เรียกใช้ angularJS
<div ng-app="" ng-controller="person2Controller">

<p><input type="text" ng-model="name" ng-show="false"></p>
<p>Filtering input(Name only):</p>
<p><input type="text" ng-model="name2.Name"></p>
<table class="table table-bordered table-hover" style="width:800px">
<tr>
    
<th>#</th>

<th>Name</th>

<th>LastName</th>

<th>Address</th>

<th>City</th>

<th>PostalCode</th>

<th>Country</th>

<th>Notes</th>

</tr>
<tr ng-repeat="x in name | filter:name2 ">

<td>{{ x.id }}</td>

<td>{{ x.Name }}</td>

<td>{{ x.LastName }}</td>

<td>{{ x.Address }}</td>

<td>{{ x.City }}</td>

<td>{{ x.PostalCode }}</td>

<td>{{ x.Country }}</td>

<td>{{ x.Notes }}</td>

</tr>

</table>
</div>
<script>
     
function person2Controller($scope,$http) {
var site = "http://localhost:19937";

var page = "/Api/";

$http.get(site + page).success(

function (response) {

$scope.name = response;

}

);
}
</script>

######################################################################

หลังจากเขียน Code ฝั่งหน้าบ้านเสร็จ ก้อมาจัดการฝั่งหลังบ้านกัน

 public ActionResult Index()

 {
 IEnumerable testModel = new List{


new TestModel() { id="1" ,Name="Rawee" ,LastName="Sri" , City="AAA", Country="", Address ="", Notes="" , PostalCode ="" },


 new TestModel() { id="2" ,Name="yee" ,LastName="sss" , City="AAA", Country="", Address ="", Notes="" , PostalCode ="" },


new TestModel() { id="3" ,Name="amp" ,LastName="hh" , City="AAA", Country="", Address ="", Notes="" , PostalCode ="" },


 new TestModel() { id="4" ,Name="peak" ,LastName="Shhjri" , City="AAA", Country="", Address ="", Notes="" , PostalCode ="" }


};

 return Json(testModel, JsonRequestBehavior.AllowGet);

}

เป็นอันเสร้จ พิธี ทดสอบ รัน ได้ผลลัพธ์ ดังใจ




<

 

วันศุกร์ที่ 12 กันยายน พ.ศ. 2557

มาทำให้ MongoDB มี การ authen User ด้วย(Password) กันเถอะ

เริ่มแรก ต้อง ต้องกำหนดให้ mongod มีการ  authen ด้วย(Password) ก่อน
ทำได้ 2 วิธี (อาจจะมีวิธีอื่น แต่ผู้เขียนขี้เกียจหาแล้ว)

วิธีที่ 1

start service ด้วย command นี้   (เพิ่มอันนี้เข้ามา--auth )
D:\Nosql_DB\mongodb2.6.4\bin\mongod.exe --auth --dbpath "D:\Nosql_DB\mongodb2.6.4\data"

วิธีที่ 2
start service ด้วย command นี้   แล้วไปอ่านค่าใน config เอา

D:\Nosql_DB\mongodb2.6.4\bin\mongod.exe --config "D:\Nosql_DB\mongodb2.6.4\bin\mongodb.conf"

สำหรับ ไฟล์ config สามารถเขียนได้ดังนี้
storage:
 dbPath: D:\Nosql_DB\mongodb2.6.4\data
security:
 authorization: enabled

แสนจะง่ายดาย

เสร็จแล้วลองเข้าใช้งาน mongoDB ด้วย command ดังนี้ D:\Nosql_DB\mongodb2.6.4\bin\mongo.exe

เมื่อเข้าไปแล้ว ขั้นตอนต่อไป คือ การเริ่มสร้าง USER ขึ้นมา โดยเราจะเริ่มสร้าง USER ที่มีชื่อว่า SiteAdmin ใน DB ชื่อว่า admin
ด้วย command ต่อไปนี้นะจ๊ะ

use admin;
db.createUser(
{
       user:  "SiteAdmin "  ,
        pwd:  "password"   ,
        roles:  
        [
             {
              role:   "userAdminAnyDatabase" ,
              db:   "admin"
             }
        ]
}
)
เมื่อ create เสร็จแล้ว ให้ restart instance service mongodb แล้ว login เข้ามาใหม่นะจ๊ะ
ทดสอบ login ด้วย user และ password ที่เราได้ create ขึ่นเมื่อกี๊ ด้วย command ดังนี้
mongo.exe -u SiteAdmin  -p password --authenticationDatabase admins
หลังจาก login สำเร็จ ผู้อ่านจะพบถึงความแตกต่าง คือ จะไม่สามารถ ใช้ command show collections ของ DB ที่เราไม่มีสิทธ์ ได้

ถ้าหากต้องการตรวจตอบว่าเรา มีสิทธื ใน db นี้หรือไม่ สามารถตรวจสอบได้จากคำสั่งดังต่อไปนี้
db.runCommand( { userInfo: "SiteAdmin" , showPrivileges: true});

ถ้าจำไม่ได้ว่ามี User อะไรบ้าง ก้อให้ใช้ command นี้
db.getUsers() ;

ต่อไปจะเป็นตัวอย่าง การเพิ่ม สิทธ์ (Role) ให้สามารถอ่านเขียนได้
db.grantRolesToUser(
       "SiteAdmin ",
       [
               {role: "readWrite" , db: "products"}  ,
               { role:  "readAnyDatabase" , db: "admin"}
       ]
)

ต่อไปเป็นการลบ User ออกจากระบบ  (ลบทั้งหมดนะ)

db.dropAllUsers( {w: "majority"  , wtimeout: 5000})

ยังมีคำสั่งอีกมากมายไว้มีเวลา จะมาเขียนให้ดูใหม่นะจ๊ะ บะบาย




วันอังคารที่ 9 กันยายน พ.ศ. 2557

มาเล่น WebAPI ให้รับ Request Json และ Response กลับไป json (ภาค 2)

หลังจากภาคที่ 1 เราได้รับ Response จาก Web API มาแล้ว
ภาคนี้เราจะมาดูวิธี จัดการ กับ Json ที่เราได้รับ ผ่าน java script กัน
มาเริ่มกันเลย ดีกว่า โดยปรับปรุง code ในส่วน ของ การรับ ดังนี้
 $.ajax({
        type: "POST",
        url: http://localhost:32197/api/values,
        data: JSON.stringify(data2),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
                    console.log('OK');
                   document.writeln(data);
                   document.writeln(JSON.stringify(data));
                   document.writeln(data.width);
                   var count = Object.keys(data).length
                   document.writeln(count);
                   for (var key in data) {
                          if (data.hasOwnProperty(key)) {
                                   document.writeln(key + " -> " + data[key]);
                           }
                    }
        }
 });

อธิบาย code
 document.writeln(data); คือ จะได้ type ของ data
 document.writeln(JSON.stringify(data));  คือ จะได้ string ของ json data
 document.writeln(data.width); คือ เข้าถึง properties ของ data
 var count = Object.keys(data).length คือ ดึง จำนวน ของ data
for (var key in data) {
                          if (data.hasOwnProperty(key)) {
                                   document.writeln(key + " -> " + data[key]);
                           }
                    }
คือ การวนเข้า ข้อมูลแต่ละตัว ใน data


เป็นอันจบ ครับ






 

มาเล่น WebAPI ให้รับ Request Json และ Response กลับไป json (ภาค 1)

เริ่มแรกที่ฝั่ง Client เขียน code ส่ง Request ดังนี้ ก่อน
 
var data2 = {
 
      "width": "1366",

      "heigth": "768",

      "map_id": "No",

      "DB": "LinkFreeDB"
};

$.ajax({

    type: "POST",

    url: http://localhost:32197/api/values,

    data: JSON.stringify(data2),

    contentType: "application/json; charset=utf-8",

    dataType: "json",

    success: function (data) {

            console.log('OK');

    }

});
 
ต่อมา มาเขียน code ที่ฝั่ง WebAPI โดยเขียน code รับ request ดังนี้
 
// POST api/values
public HttpResponseMessage Post(HttpRequestMessage req)
{      string str_req = req.Content.ReadAsStringAsync().Result;

      DataModel model = req.Content.ReadAsAsync<DataModel>().Result;

      //return new HttpResponseMessage()

     //{

          // Content = new StringContent("POST: Test message")

     //};

return Request.CreateResponse<DataModel>(HttpStatusCode.OK, model, System.Net.Http.Formatting.JsonMediaTypeFormatter.DefaultMediaType );
 
}
 
อธิบายในส่วน ของ code
 
บรรทัดแรกคือ การอ่าน ค่า ทั้งหมดที่รับ มา ผลลัพธ์ ที่ได้คือ ได้ json string ในรูปแบบ ดังนี้

{"width": "1366","heigth": "768","map_id": "No","DB": "LinkFreeDB" }
 
 บรรทัดที่ 2 คือ การอ่าน ค่า แล้วมาเก็บลงใน class model ที่ชื่อว่า DataModel โดยมีการสร้างไว้ ดังนี้
 class DataModel
{
 public string width { get; set;}
 public string heigth{get; set;}
 public string map_id { get; set;}
 public string DB { get; set;}
}

บรรทัดที่ 3 ส่วนที่ comment ไว้ คือ ตัวอย่างที่ต้องการ return ค่า string กลับไป แต่เราไม่ได้ใช้ เลย comment ทิ้งไว้

//return new HttpResponseMessage()

     //{

          // Content = new StringContent("POST: Test message")

     //};

บรรทัด สุดท้าย คือ การ return ค่า กลับไป ในรูปแบบ ของ Json ครับ
return Request.CreateResponse<DataModel>(HttpStatusCode.OK, model, System.Net.Http.Formatting.JsonMediaTypeFormatter.DefaultMediaType );

เมื่อเสร็จแล้วอย่าเพิ่งดีใจ ยังมีต่อ ภาค 2 ในส่วนของ client เมื่อได้รับ response ตอบกลับ ต้องจัดการอย่างไรกับ Json ที่ได้รับ
เดี่ยวผมจะเขียนต่อ ในภาค 2 ครับ

ขอบคุณครับ