>  기사  >  웹 프론트엔드  >  json을 데이터베이스처럼 작동하는 javascript lib_javascript 기술

json을 데이터베이스처럼 작동하는 javascript lib_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:18:42939검색

얼마 전 직장에서 Json 데이터를 사용했는데 클라이언트 측에 간단한 추가, 삭제, 수정 및 쿼리를 넣어 서버 측의 부담도 줄일 수 있었으면 좋겠습니다. Json에서 동작할 수 있는 여러 자바스크립트 라이브러리를 검색하다가 최종적으로 TAFFY DB를 선택했습니다. 그 이유는 다음과 같습니다.
1. BSD 오픈소스 라이선스를 사용하므로 상업적 이용 제한을 걱정할 필요가 없습니다.
2. 누군가가 업데이트하고 있으며 다른 프레임워크(예: Jquery, YUI, Dojo 등)와 충돌하지 않습니다.
3. 추가, 삭제, 수정, 검색, 정렬 등 완전한 기능이 있습니다. , 등.
4. 압축 후 크기가 17k에 불과한 소형.
그래서 작업을 마친 후 이 글을 작성하고 이 클래스 라이브러리가 Json 쿼리 수정을 찾는 일부 코더에게 도움이 되고 모두와 소통하고 배울 수 있기를 바랍니다.

TAFFY DB 기본정보
프로젝트 홈페이지 : http://taffydb.com/
호스팅 주소 : https://github.com/전형조/taffydb

사용법:

코드 복사 코드는 다음과 같습니다.

<스크립트 유형 =" text/javascript" charset="utf-8" src="taffy-min.js">

코드 복사 코드는 다음과 같습니다.

//빈 데이터베이스 생성
var db = TAFFY()//데이터베이스 생성 데이터 조각 포함
var db = TAFFY({record:1,text:"example"})
//배열을 통해 데이터베이스를 생성합니다. 배열의 요소는 json 형식의 개체입니다. multiple)
var db = TAFFY([{ Record:1,text:"example"}])
// json 형식 문자열을 통해 데이터 생성(여러 개일 수 있음)
var db = TAFFY('[ {"record":1,"text": "example"}]')

쿼리 데이터:
먼저 데이터베이스를 구축합니다. 모든 후속 예제는 이 데이터베이스를 기반으로 합니다.

코드 복사 코드는 다음과 같습니다.
var db = TAFFY([//Build 도시 데이터베이스, 필드는 지방을 나타냄, 도시 이름, 우편 번호, 정렬
{ 지방:"Beijing", cityName:"Beijing", zipCode:"10001", orderNum:1},
{ 지방:"허베이 " , cityName:"스자좡", zipCode:"10002", orderNum:2},
{ 지방:"허베이", cityName:"바오딩", zipCode:"10003", orderNum:3},
{ Province :"Hebei", cityName:"Chengde", zipCode:"10004", orderNum:4},
]);

1. 필드 값을 기준으로 쿼리

코드 복사 코드는 다음과 같습니다.
var city = db({province:"Hebei"}); //모두 쿼리 성 값은 "Hebei" 데이터이며 TAFFY 형식의 개체를 반환합니다
//console.log 이 함수는 Firefox의 Firebug 및 Google Chrome 개발자 도구와 같은 콘솔이 있는 모든 브라우저에서 사용할 수 있습니다( 호출하려면 F12를 누르세요)
for(var i = 0; i< 도시().count(); i ){
//TAFFY의 get() 함수를 사용하여 TAFFY를 변환할 수 있습니다. 객체 데이터를 다음으로 변환합니다. json 형식
console.log("도시 이름", 도시().get()[i].cityName);
}
console.log("첫 번째 데이터 조각: ", 도시 ().first()); // first() 함수는 json 형식의 첫 번째 데이터를 반환할 수 있습니다

2. 조건에 따른 쿼리(구체적인 조건은 http://www.taffydb.com/writingqueries


//단일 조건 쿼리
//차수가 2보다 큰 모든 데이터 쿼리
db({ orderNum:{'>':2 }});
//범위 쿼리
//차수가 2보다 크고 4보다 작은 모든 데이터를 쿼리
db({ orderNum:{'> ':2, '<':4}} ; <':4}, 지방:"허베이"});
//여러 조건" 또는 "쿼리
// 2보다 큰 데이터 정렬 쿼리 또는 4
db({ orderNum:{' >':2}}, { orderNum : {'<':4}});
//지정된 데이터 내에서 쿼리(where in)
//바오딩, 스자좡 등 도시에 대한 데이터 쿼리
db({ cityName:['Baoding','Shijiazhuang']});



3. 정렬


코드 복사

코드는 다음과 같습니다.

//단일 조건 정렬
db().order("orderNum desc"); // orderNum에 따른 역순
db().order("orderNum") //앞으로 order
//다중 필드 정렬
db().order("orderNum desc, zipCode asc") //먼저 orderNum의 역순, 그 다음 zipCode의 양수 순서

4. 계산

코드 복사 코드는 다음과 같습니다.

//찾기 최대값
db().max("orderNum"); //orderNum의 최대값을 구하고 반환
//최소값 찾기
db().min("orderNum"); //최소 orderNum 가져오기
//Sum
db().sum("orderNum") //모든 orderNum의 합계 가져오기
//첫 번째 데이터 조각 가져오기
db( ).first(); //첫 번째 데이터를 가져와 json 형식으로 반환합니다.
// 마지막 데이터를 가져옵니다.
db().last() // 마지막 데이터를 가져옵니다. 그리고 json 형식으로 반환합니다
// 이것을 사용할 수 있습니다. 페이지를 매깁니다. ㅎㅎ
db().start(15).limit(20) //15번째 데이터부터 시작하여 다음 20개를 가져옵니다.

5. 내장 함수 쿼리. 일부 데이터는 쿼리 시 계산이 필요합니다.

코드 복사 코드는 다음과 같습니다:

db().filter(function(){
return this.cityName.length > 2;
})

데이터 추가

코드 복사 코드는 다음과 같습니다.

//Add a 데이터 조각
db.insert({province:"Hunan", cityName:"Changsha", zipCode:"10005", orderNum:5});

데이터 삭제

코드 복사 코드는 다음과 같습니다.

//모두 삭제 data
db().remove();
//orderNum이 5보다 큰 모든 데이터 삭제
db({orderNum:{'>':5}}).remove();

데이터 수정

코드 복사 코드는 다음과 같습니다.

//변경 모든 데이터의 orderNum을 1
db().update({orderNum:1});으로 수정합니다.

//Beijing이라는 도시의 우편번호를 100000으로 변경
db({cityName:"Beijing"}).update({zipCode:"100000"})

//모든 orderNum을 1씩 늘립니다.
db().update(function(){
this.orderNum = this.orderNum 1;
return this;
});
/*
특수사항: 가끔 추가, 삭제, 확인에는 문제가 없으나, 수정을 하면 '필드를 찾을 수 없습니다'라는 오류가 발생합니다.
이것은 TAFFY의 작은 버그일 것입니다. 이 경우에 발생합니다. , 그냥 다시 초기화하세요. TAFFY DB의 모든 데이터를 문자열로 변환하는
stringify() 함수를 사용해야 합니다. 따라서 이러한 상황이 발생하면 다음을 수행할 수 있습니다.
*/
db = TAFFY(db().stringify()); //콘텐츠 다시 초기화
db().update({column:value});

이 글을 쓰면서 이 간단한 튜토리얼이면 충분하다고 생각하며, 초보자가 이 클래스 라이브러리를 빠르게 시작하는 데 이미 편리하다고 생각합니다.
물론 제가 언급하지 않은 퍼지 쿼리 등 직접 쿼리해야 하는 더 복잡한 작업이 많이 있습니다. 해당 프로젝트의 공식 홈페이지에 가시면 보실 수 있습니다. (영어)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.