nodejs + http + mongodb 구현 mvc webapi
4681 단어 자바 script
잔말 말고 중요 한 js 코드 몇 개 붙 여. 빨리.
1. mongodb 데이터 상호작용
const MongoClient = require('mongodb').MongoClient;
const config = require('./mongoConfig');
const eum = {
insert: function (db, client, data, reslove, reject) {
db.collection(data.name).insertMany(data.data, function (err, res) {
client.close();
if (err) {
reject(err);
} else {
reslove(res);
}
});
},
delete: function (db, client, data, reslove, reject) {
db.collection(data.name).deleteMany(data.data, function (err, res) {
client.close();
if (err) {
reject(err);
} else {
reslove(res);
}
})
},
update: function (db, client, data, reslove, reject) {
const id = data.data.id;
delete data.data.id;
db.collection(data.name).updateOne({ '_id': id }, { $set: data.data }, function (err, res) {
client.close();
if (err) {
reject(err);
} else {
reslove(res);
}
})
},
findall: function (db, client, data, reslove, reject) {
db.collection(data.name).find(data.data).toArray(function (err, res) {
client.close();
if (err) {
reject(err);
} else {
reslove(res);
}
})
},
find: function (db, client, data, reslove, reject) {
data.rows = parseInt(data.rows);
data.page = parseInt(data.page);
db.collection(data.name).find(data.data).limit(data.rows).skip((data.page - 1) * data.rows).toArray(function (err, res) {
if (err) {
reject(err);
} else {
db.collection(data.name).countDocuments(data.data, function (counterr, count) {
client.close();
if (counterr) {
reject(counterr);
} else {
reslove({ total: count, rows: res });
}
})
}
})
},
findOne: function (db, client, data, reslove, reject) {
db.collection(data.name).findOne(data.data, function (err, res) {
client.close();
if (err) {
reject(err);
} else {
reslove(res);
}
})
},
count: function (db, client, data) {
db.collection(data.name).findOne(data.data, function (err, res) {
if (err) throw err;
client.close();
})
}
}
module.exports = {
do: function (eumtype, data) {
return new Promise((reslove, reject) => {
MongoClient.connect(config.serverUrl, { useNewUrlParser: true }, function (err, client) {
const db = client.db(config.dataBaseName);
eum[eumtype](db, client, data, reslove, reject);
});
})
}
}
module.exports = {
serverUrl: 'mongodb://localhost:27017',
dataBaseName: ''
}
const INSERT = 'insert';
const UPDATE = 'update';
const DELETE = 'delete';
const FIND = 'find';
const COUNT = 'count';
const FINDONE = 'findOne';
const FINDALL = 'findall';
module.exports = {
INSERT, UPDATE, DELETE, FIND, COUNT, FINDONE, FINDALL
}
2. 매개 변수 포 지 셔 닝 컨트롤 러 및 action 에 접근
var fs = require('fs');
async function mapping(colltrollName, actionName, dataParams) {
var result;
dataParams = {
name: colltrollName,
data: dataParams
};
await fs.readdirSync(__dirname + '/controllers').filter((f) => {
return f.startsWith(colltrollName);
}).forEach((f) => {
let colltro = require(__dirname + '/controllers/' + f);
if (colltro[actionName]) {
result = {
code: 0,
data: colltro[actionName](dataParams)
}
} else {
result = {
code: 404,
data: null
}
}
})
return result;
}
module.exports = {
mapping: mapping
}
3. 컨트롤 러
const client = require('../mongoHelper');
const eumType = require('../eumType');
module.exports = {
async getMenus(data) {
return await client.do(eumType.FINDALL, data);
},
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.