Google Datastore |
구글에서 지원하는 비관계형-NoSQL 기반의 데이터베이스 호스팅 서비스.
자세한 사항은 여기에서 확인할 수 있다.
초기설정인 구글 프로젝트 및 데이터베이스 생성은
이 문서에서 다루지 않으므로 해당 내용은 다른 웹사이트를 참고하기 바란다.
Google Datastore 외부모듈 |
노드에서 Google Colud Platform- DataStore 제품군을 사용하려면,
@google-cloud/datastore 외부모듈을 설치해야 한다.
npm install @google-colud/datastore
Before you begin |
- Select or create a Colud Platform.
- Enable billing for your project.
- Enable the Google Colud Datastore API.
- Set up authentication with a service account so you can aeccess the API from your local warkstation.
외부모듈 로드 및 객체생성 |
//! Datastore 모듈 로드
const Datastore = require('@google-cloud/datastore');
//! Datastore 객체 생성
const datastore = new Datastore({
projectId: 'your_project_id',
keyFilename: './auth_Key_File.json'
});
Save(Insert) |
//! Key값(Kind 및 logical id), Data 설정
const key = datastore.key(['Account']);
const data = {
email : "Test Email",
password : "Test Password"
};
//! Insert Transcation.
datastore.save({
key: key,
data: data
}, function(err) {
if (err) {
//! Error handling omitted.
}
});
GET(Select) by row-id |
//! Key값(Kind 및 logical id), Data 설정
const key = datastore.key({
namespace : "",
path : ["Account", 5659313586569216]
});
const data = {
email : "Test Email Value",
password : "Test Password Value"
};
//! Select Transcation.
datastore.get(key, (err, entity)=>
{
if(err){
//! Error handling omitted.
}
console.log(entity);
});
> 출력
{ password: 'Test Password Value',
email: 'Test Email Value',
[Symbol(KEY)]:
Key {
namespace: undefined,
id: '5659313586569216',
kind: 'Account',
path: [Getter] } }
GET(Select) by predicate |
//! Select Transcation.
let query = datastore
.createQuery('', 'Account'); //! alike SELECT * FROM default:ACCOUNT;
datastore.runQuery(query, (err, entities, info)=>
{
// entities = An array of records.
// Access the Key object for an entity.
let firstEntityKey = entities[0][datastore.KEY];
console.log(firstEntityKey);
});
>출력
Key {
namespace: undefined,
id: '5659313586569216',
kind: 'Account',
path: [Getter] }
쿼리결과를 Stream 형태로 받아오는 것은 여기,
쿼리조건절 정의 등 다양한 메소드를 확인하는 것은 여기에서 확인하기 바란다.
Update by row-id |
//! Key값(Kind 및 logical id), Data 설정
const key = datastore.key({
namespace : "",
path : ["Account", 5659313586569216]
});
const data = {
email : "Updated Test Email Value",
password : "Updated Test Password Value"
};
const entity = {
key : key,
data : data
};
//! Update Transaction.
datastore.update(entity, (err)=>
{
if(err){
//! Error handling omitted.
};
});
Delete by row-id |
//! Key값(Kind 및 logical id), Data 설정
const key = datastore.key({
namespace : "",
path : ["Account", 5659313586569216]
});
//! Update Transaction.
datastore.delete(key, (err)=>
{
if(err){
//! Error handling omitted.
}
});
Batch(Bluk) Update-Insert(Upsert) |
//! Defined key, data
const key1 = datastore.key({
namespace : "",
path : ["Account", 5659313586569216] //! To update.
});
const key2 = datastore.key({
namespace : "",
path : ["Account"] //! To insert.
});
const data = {
email : "Batch Upserted",
password : "Batch Upserted"
};
//! Defined entity.
const entity1 = {
key : key1,
data : data
};
const entity2 = {
key : key2,
data : data
};
const entities = [entity1, entity2];
//! Batch Insert-Update Transaction.
datastore.upsert(entities, (err)=>
{
if(err){
//! Error handling omitted.
console.log(err);
}
});
해당 객체가 있다면 갱신(Update), 없다면 삽입(Insert)한다.
이러한 작업을 엔터티 배열에 대해 한꺼번에 수행한다.
'# 미사용' 카테고리의 다른 글
[1-1-2]: EA 프레임워크 (0) | 2018.03.10 |
---|---|
[1-1-1]: 전사 아키텍쳐(EA) (0) | 2018.03.10 |
오라클 DB에 연결하기 (0) | 2018.02.26 |
Ajax 요청 처리하기 (0) | 2018.02.26 |
파일 업로드하기 (0) | 2018.02.26 |