Я использую мангуст и возвращаю документы из коллекции, которая будет отображаться с использованием данных. Однако у меня есть некоторые проблемы. Клиентский кодПравильный способ возврата из mongo в datatable
var table = $('#dataTables-example').DataTable({
"bProcessing" : true,
"bServerSide" : true,
"ajax" : {
"url" : "/mongo/get/datatable",
"dataSrc": ""
},
"columnDefs": [
{
"data": null,
"defaultContent": "<button id='removeProduct'>Remove</button>",
"targets": -1
}
],
"aoColumns" : [
{ "mData" : "name" },
{ "mData" : "price" },
{ "mData" : "category" },
{ "mData" : "description" },
{ "mData" : "image" },
{ "mData" : "promoted" },
{ "mData" : null}
]
});
Затем это обрабатывается на стороне сервера не используя следующие
db.once('open', function callback()
{
debug('Connection has successfully opened');
productSchema = mongoose.Schema({
name: String,
price: String,
category: String,
description: String,
image: String,
promoted: Boolean
});
Product = mongoose.model('Product', productSchema, 'products');
});
exports.getDataForDataTable = function (request, response) {
Product.dataTable(request.query, function (err, data) {
debug(data);
response.send(data);
});
};
Если я использую приведенный выше код DataTable не в состоянии отобразить документы, утверждая не совпадающие записи найденоBUT он правильно отображает количество документов Показано 1 - 2 из 2 записей. Если я изменю код на стороне сервера на ответ с data.data
вместо data
, документы будут правильно заполнены в таблице BUT количество записей больше не найдено, вместо этого говорят Показаны с 0 по 0 из 0 записей (от NaN total записей)
exports.getDataForDataTable = function (request, response) {
Product.dataTable(request.query, function (err, data) {
debug(data);
response.send(data.data);
});
фактическое data
возвращается при запросе Монго является
{ draw: '1', recordsTotal: 2, recordsFiltered: 2, data: [ { _id: 5515274643e0bf403be58fd1, name: 'camera', price: '2500', category: 'electronics', description: 'lovely', image: 'some image', promoted: true }, { _id: 551541c2e710d65547c6db15, name: 'computer', price: '10000', category: 'electronics', description: 'nice', image: 'iamge', promoted: true } ] }
Я не уверен, что я следую. Попробуй вместо чего? Как вы думаете, какой эффект у вас будет? –
Он украден из официального примера на https://github.com/lepazmino/mongoose-datatable-demo/blob/master/mongo.js. Я чувствую, что когда вы вызываете Product.dataTable, он не может получить доступ схему продукта и, таким образом, выдает форматирование извлеченных данных в указанный битсон/json. –
Вообще говоря, сохранение моделей в папке модели, запуск плагина там и экспорт модели - лучший образец архитектуры программного обеспечения, а не определение схемы внутри db.once. –