node.jsによるmongodbの検索ページの例
mongodbあいまい検索して、改ページします。
1.データベースの作成
コードは以下の通りです
コードは以下の通りです
1.データベースの作成
コードは以下の通りです
var mongoose = require('mongoose');
var shortid = require('shortid');
var Schema = mongoose.Schema;
var IndexDataSchema = new Schema({
_id: {
type: String,
unique: true,
'default': shortid.generate
},
type: String,
city: String,
name:string,
value: [{name: String, value: String}],
create: {type: Date, default: Date.now},
expand: String
});
IndexDataSchema.statics = {
defaultSort: {'create': 1},
defaultOptions: {'pageSize': 0}
};
var IndexData = mongoose.model('IndexData', IndexDataSchema);
module.exports = IndexData;
ページレイアウトここでは検索ボックスと検索ボタンだけが必要です。またボタンをクリックすると、search()メソッドを実行して要求を送ります。コードは以下の通りです
<div class="searchPart">
<input type="text" class="form-control" id="txtSearch" placeholder=" ">
<button class="btn btn-success search_btn" onclick="search()"> </button>
</div>
<script>
var paginObj;
//
var pageSize = 20;
// 1
var currentPage = 1;
var condition = {'city': currentCityId, 'name': ''}
jQuery(document).ready(function () {
refresh();
});
//
function getCondition() {
var name = $('#txtSearch').val();
if (name && name.trim()) {
// {'$regex': name, '$options': 'i'}} ,name
condition = {'city': currentCityId, 'name': {'$regex': name, '$options': 'i'}};
}
else {
condition = {'city': currentCityId}
}
return condition;
}
//
function refresh() {
//
$.get('/Manage/list/projects', {
'pageSize': pageSize,
'currentPage': currentPage,
'condition': getCondition()
}, function (result) {
appendData(result.data);
})
//
$.get('/Manage/listCount/projects', {'condition': condition}, function (result) {
paginObj = new DataPagin(document.querySelector('.projects-list'), result.count, {
'pageSize': pageSize,
'changePageFun': rquestPageData
});
})
}
//
function rquestPageData(currentPage, callback) {
$.get('/Manage/list/projects', {
'pageSize': pageSize,
'currentPage': currentPage,
'condition': getCondition()
}, function (result) {
appendData(result.data);
})
if (callback) {
callback();
}
}
// ,
function changePage(paginObj, index) {
paginObj.setPageNumber(index);
}
function appendData(data) {
//debugger;
var list = $('.projects-list').children('tbody');
list.html('');
//
for (var i = 0; i < data.length; i++) {
.........
//
})
}
//
function search() {
currentPage = 1;
refresh();
}
</script>
データベースに検索して該当する内容を返します。
var formidable = require("formidable");
var common = require('./common');
var path = require("path");
var fs = require('fs');
var path = require('path');
var guid = require('guid');
var shortid = require('shortid');
var AuctionHouse = require('./db/IndexData');
var funs = {
getList: function (collectionName, req, res, next) {
var mainObj = transformCollctionName(collectionName);
if (!mainObj) {
next();
}
var options = req.query;
var sort = options.sort || mainObj.defaultSort;
var pageSize = options.pageSize || mainObj.defaultOptions.pageSize;
var currentPage = options.currentPage || 1;
var condition = options.condition || {}
//
mainObj.find(condition).sort(sort).skip((currentPage - 1) * pageSize).limit(pageSize).exec(function (err, docs) {
if (err) {
next(err);
}
return res.json(common.returnData(true, docs));
})
},
countList: function (collectionName, req, res, next) {
var mainObj = transformCollctionName(collectionName);
if (!mainObj) {
next();
}
var condition = req.query.condition || {}
mainObj.find(condition).count().exec(function (err, docs) {
if (err) {
next(err);
}
return res.json({'count': docs});
})
},
HandleEvent: function (collectionName, actionsName, req, res, next) {
var mainFuns = getCollctionFuns(collectionName)
if (!mainFuns) {
next();
}
var fun = mainFuns[actionsName];
if (!fun) {
next();
}
fun(req, res, next);
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。