Ani*_*udh 8 datatable datatables mongodb node.js
我的数据库中有大约5,00,000条记录.我正在使用DataTables来构建管理面板来管理记录.我将Node.js作为MongoDB的支持.
我使用过这个库 - https://www.npmjs.com/package/datatables-query
到目前为止,在页面加载我已成功加载结果,如下图所示.
每当我在搜索框中输入内容时,我都会收到500错误,如屏幕截图所示.
这可能是什么问题?
DataTable是显示大量数据网格的好选择还是考虑Node.js,Express和MongoDB组合有什么更好的选择?
这是我的服务器端代码.
app.post('/getUsersData',function(req, res) {
var Model = require('./models/user'),
datatablesQuery = require('datatables-query'),
params = req.body,
query = datatablesQuery(Model);
query.run(params).then(function (users) {
var data = JSON.stringify(users);
// var data = JSON.stringify(users);
res.end(data);
}, function (err) {
res.status(500).json(err);
});
});
Run Code Online (Sandbox Code Playgroud)
我在MongoDB中有一个名为User with 3 columns的表
1)姓名
2)电子邮件
3)密码
$(document).ready(function() {
var table = $('#datatable').DataTable({
// dom: 'Bfrtip',
processing: true,
serverSide: true,
order: [[1, 'asc']],
"aoColumnDefs": [ { "sClass": "hide_me", "aTargets": [ 0 ], visible: false } ], // first column in visible columns array gets class "hide_me"
ajax: {
url: "/getUsersData",
type: 'POST',
dataSrc: "data"
},
columns: [
{ data : "_id"},
{ data : "name" },
{ data : "email" },
{ data : "password" },
],
responsive: true
});
});
Run Code Online (Sandbox Code Playgroud)
我可能会在数据上创建一个索引并搜索该索引,而不是搜索数据本身。但是,如果您创建全文索引,则需要对集合中的所有列进行组合,而 mongo只允许每个集合有 1 个全文索引。
至于替代方案,您可以考虑 AWS 的 Elastic Search(它与 MongoDB 配合得很好)或 Sphinx Index(基于 PostreSQL)
编辑:我知道这个答案实际上并没有丝毫回答问题,但我担心 500 错误不是应用程序中的内存问题,而是数据库的内存问题(mongo 不像 SQL,所以不要设计你的应用程序就像在 SQL 中一样)。
如果您打算更改数据库结构,请阅读一些阅读材料
http://rachbelaid.com/postgres-full-text-search-is-good-enough/
https://about.gitlab.com/2016/03/18/fast-search-using-postgresql-trigram-indexes/
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |