Tôi đang sử dụng mongoose và trả lại tài liệu từ bộ sưu tập được hiển thị bằng cách sử dụng datatables. Tôi đang gặp một số vấn đề. Mã client-side làCách chính xác để trở về từ mongo đến 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}
]
});
Sau đó này xử lý trên server-side sử dụng
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);
});
};
Nếu tôi sử dụng đoạn mã trên DataTable thất bại trong việc hiển thị các văn bản, tuyên bố không có hồ sơ phù hợp sau tìm thấyNHƯNG nó hiển thị chính xác số lượng tài liệu Hiển thị 1 đến 2 của 2 mục nhập. Nếu tôi thay đổi mã phía máy chủ để phản hồi bằng data.data
thay vì data
, các tài liệu được điền chính xác trong bảng NHƯNG số lượng hồ sơ không còn được tìm thấy, thay vào đó nói Hiển thị 0 đến 0 trong số 0 mục (được lọc từ tổng số NaN mục)
exports.getDataForDataTable = function (request, response) {
Product.dataTable(request.query, function (err, data) {
debug(data);
response.send(data.data);
});
các thực tế data
được trả về khi truy vấn Mongo là
{ 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 } ] }
Tôi không chắc chắn tôi làm theo. Hãy thử thay vì những gì? Bạn nghĩ điều này có ảnh hưởng gì? –
Nó bị lấy cắp từ ví dụ chính thức tại https://github.com/lepazmino/mongoose-datatable-demo/blob/master/mongo.js Tôi cảm thấy rằng khi bạn đang gọi Product.dataTable, nó không thể truy cập lược đồ sản phẩm và do đó có vấn đề định dạng dữ liệu đã truy xuất đến bson/json được chỉ định. –
Nói chung, giữ cho các mô hình của bạn bên trong một thư mục mô hình, khởi tạo plugin và xuất mô hình là một mẫu kiến trúc phần mềm tốt hơn là xác định lược đồ bên trong db.once. –