2013-10-28 30 views
7

Tôi mới bắt đầu học MongoDB và mongoose. Hiện nay tôi có cấu trúc sau:Làm cách nào để lấy Dữ liệu từ MongoDb bằng cách sử dụng mongoose?

database -> skeletonDatabase 
collection -> adminLogin 

Khi tôi chạy db.adminLogin.find() từ dòng lệnh tôi nhận được:

{ "_id" : ObjectId("52lhafkjasfadsfea"), "username" : "xxxx", "password" : "xxxx" } 

kết nối của tôi(chỉ hoạt động này, chỉ cần thêm nó FYI)

module.exports = function(mongoose) 
{ 
    mongoose.connect('mongodb://localhost/skeletonDatabase'); 

    var db = mongoose.connection; 
    db.on('error', console.error.bind(console, 'connection error:')); 
    db.once('open', function callback() { 
     console.log('Conntected To Mongo Database'); 
    }); 
} 

My -js-

module.exports = function(mongoose) 
{ 
    var Schema = mongoose.Schema; 

    // login schema 
    var adminLogin = new Schema({ 
     username: String, 
     password: String 
    }); 

    var adminLoginModel = mongoose.model('adminLogin', adminLogin); 
    var adminLogin = mongoose.model("adminLogin"); 

    adminLogin.find({}, function(err, data){ 
     console.log(">>>> " + data); 
    }); 
} 

console.log() lợi nhuận của tôi như >>>>

Vì vậy, những gì tôi làm sai ở đây? Tại sao tôi không nhận được bất kỳ dữ liệu nào trong nhật ký bảng điều khiển của mình? Cảm ơn trước sự giúp đỡ nào.

Trả lời

19

mongoose theo mặc định có tên mô hình ít và ghép chúng với một bộ sưu tập có tên số nhiều, vì vậy mongoose đang tìm trong db cho một bộ sưu tập có tên "adminLogins" không tồn tại. Bạn có thể chỉ định tên bộ sưu tập của bạn như là đối số thứ 2 khi định nghĩa giản đồ của bạn: biên dịch

var adminLogin = new Schema({ 
    username: String, 
    password: String 
}, {collection: 'adminLogin'}); 
+2

Đó là một tính năng chống khủng khiếp. Tôi nghĩ rằng tôi đã nhìn thấy nói chuyện về github của việc chấm dứt nó trong một số phát hành trong tương lai. Nếu bạn đang sử dụng express, 'res.send (data)' để gửi nó đến trình duyệt và bạn đã hoàn tất. –

+1

Rất vui được biết, vâng tôi đang sử dụng Express. Nhưng tôi cũng có chút sương mù. Tôi đã thử sử dụng 'res.send (data)' nhưng không thể im lặng tìm ra cách mà toàn bộ phản ứng được cho là hoạt động. Tôi có app.configure toàn cầu của tôi cùng với kết nối mongoose của tôi. Vì vậy, tôi đang sử dụng 'require()' nhưng không chắc chắn làm thế nào để vượt qua một yêu cầu thông qua nó. –

+0

Cảm ơn @PeterLyons, hoạt động của nó hoàn hảo .. Cảm ơn một lần nữa :) –

0

đầu tiên chỉ một mô hình với sơ đồ như một cuộc tranh cãi

var adminLogin = mongoose.model('adminLogin', adminLogin);

trong adminLogin mã của bạn không tồn tại, adminLoginModel;

sau đó, thay vì để

adminLogin.find({}, function(err, data){ 
     console.log(">>>> " + data); 
    }); 

thử này

adminLogin.find(function (err, adminLogins) { 
    if (err) return console.error(err); 
    console.log(adminLogins); 

là rất quan trọng "s" vì Mongo sử dụng số nhiều của mô hình để đặt tên cho bộ sưu tập, xin lỗi vì tiếng anh của tôi ..

Các vấn đề liên quan