ブログプロジェクト2-2:主な開発-MariaDB
2525 ワード
1.なに?
MariaDBは、SQLによるデータベース管理をサポートするオープンソースDBMSです.
2.なぜ使うのですか。
モンゴDBやGoogle FirebaseなどのNoSQL DBのような選択肢もありますが、筆者はSQLに詳しいので、学習による開発時間の増加よりも、スピーディーに理解できるものを利用するのが好きだと思います.個人的なプロジェクトなので、費用がかからないオープンソースDBMSであるMariaDBを使うことにしました.
3.適用方法
モンゴDBやGoogle FirebaseなどのNoSQL DBのような選択肢もありますが、筆者はSQLに詳しいので、学習による開発時間の増加よりも、スピーディーに理解できるものを利用するのが好きだと思います.個人的なプロジェクトなので、費用がかからないオープンソースDBMSであるMariaDBを使うことにしました.
3.適用方法
var mysql = require('mysql2');
const db = mysql.createConnection({
host:'',
user:'',
password:'',
database:'myblog'
});
module.exports = db;
const db = require('../lib/db');
const sanitizeHtml = require('sanitize-html');
const asyncHandler = require('express-async-handler');
let Post = function(post){
this.id = post.id
this.title = post.title;
this.content = post.content;
this.image_src = image_src;
}
// index 설명페이지 데이터 전부 가져옴.
Post.aboutmeAll = function(){
// async 처리위해 Promise 사용
return new Promise((resolve, reject) => {
db.query("SELECT * FROM aboutme", function(err, result, fields){
if (err) throw err;
else {
resolve(result);
}
})
}).catch(error => console.log(error));
}
...
apiController.js (Controller)const indexmodel = require('../model/indexpost');
////////////////////////////// aboutme API ////////////////////////////////////////////////////////////
// @ get
// /api/aboutme
const getAboutme = async(req, res) => {
var result = {};
result = await indexmodel.aboutmeAll(); // 전체 aboutme table data 소환
res.json(result);
};
...
したがって、Promise-resolution/async-awaitとして作成されます.次のように動作します.
2-関数でPromiseオブジェクトを返す非同期関数を呼び出します.このとき、前にwaitを追加して、非同期関数が終了を待つようにします.
3モデルの関数が呼び出されます.(Post.aboutmeAll関数)Promiseオブジェクトを返す匿名関数内で、非同期処理が正常に完了した場合、結果オブジェクトを返す必要があります.これは明示的な決心だ.(resolve(result))
4-Promiseオブジェクトが返されると、getAboutme関数の残りの部分が操作されます.
Reference
この問題について(ブログプロジェクト2-2:主な開発-MariaDB), 我々は、より多くの情報をここで見つけました https://velog.io/@jake0601/블로그-프로젝트-2-2-주요-개발-내용-MariaDBテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol