본문 바로가기

# 미사용

Google Datastore에 연결하기

Google Datastore

구글에서 지원하는  비관계형-NoSQL 기반의 데이터베이스 호스팅 서비스.

자세한 사항은 여기에서 확인할 수 있다.


초기설정인 구글 프로젝트 및 데이터베이스 생성은

이 문서에서 다루지 않으므로 해당 내용은 다른 웹사이트를 참고하기 바란다.

Google Datastore 외부모듈

노드에서 Google Colud Platform- DataStore 제품군을 사용하려면,

@google-cloud/datastore 외부모듈을 설치해야 한다.

   npm install @google-colud/datastore

Before you begin

외부모듈 로드 및 객체생성

//! 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