2014-04-16 19 views
9

Tôi có một lộ trình thiết lập có sử dụng một mô hình gọi là Todo như dưới đây:Mongoose tìm() không trả về kết quả

app.get('/api/todos', function(req, res) { 
    Todo.find({},function(err, todos) { 
     if (err) 
      res.send(err); 
     console.log("number of todos " + todos.length); 
     res.json(todos); // return all todos in JSON format 
    }); 
}); 

Tuy nhiên, todos.length luôn là 0, vì nó không tìm thấy bất kỳ kết quả. Khi tôi chạy:

use test3 
db.Todo.find() 

Tôi chắc chắn tôi đã kết nối với cùng một db. Tôi có thể thấy kết nối trong giao diện điều khiển mongod. kết nối của tôi là bên trong config/tập tin db.js:

module.exports = { 
    url : 'mongodb://localhost/test3' 
} 

Các kết nối trong server.js của tôi là như sau:

var db = require('./config/db'); 
mongoose.connect(db.url); 

trong Mongo Shell tôi nhận được 1 kết quả. Tôi hy vọng kết quả này sẽ được trả về bởi truy vấn tìm kiếm. Có điều gì tôi đã bỏ lỡ không? Tôi đang sử dụng Mongoose 3,6

Cheers

+1

Bạn có chắc bạn đang kết nối với cơ sở dữ liệu tương tự trong chương trình của bạn khi bạn đang làm với vỏ? Thêm mã kết nối cơ sở dữ liệu của bạn và ví dụ về kết nối của bạn với trình bao cho câu hỏi của bạn nếu bạn không chắc chắn. –

+0

Tôi đã thêm một số thông tin nhiều hơn bạn yêu cầu – user3539643

+0

Cũng lưu ý rằng cầy mangut pluralizes tên mô hình theo mặc định cũng như chuyển đổi này thành chữ thường và các quy tắc khác. Vì vậy, trừ khi bạn đang trọng này, cầy mangut đang tìm kiếm một bộ sưu tập có tên là "todos" mà có thể không tồn tại. –

Trả lời

35

Vì vậy, điều này rất nhiều vẻ thích là bạn đã tạo bộ sưu tập trong một cơ sở dữ liệu hiện có và bây giờ bạn đang cố gắng truy cập vào các với các mô hình cầy mangut.

Vấn đề là mongoose sử dụng một số mặc định mà bạn có thể không nhận thức được, vì vậy ví dụ bạn đang hiển thị từ trình bao không giống như những gì mongoose đang làm theo mặc định.

Vì vậy, bạn có thể đổi tên bộ sưu tập của bạn để phù hợp với những gì cầy mangut hy vọng theo mặc định hoặc thay đổi những gì cầy mangut nào để phù hợp với tên hiện tại của bạn. Trong trường hợp sau, bạn trực tiếp xác định tên mô hình như vậy:

mongoose.model("Todo", toDoSchema, "Todo"); 

Vì vậy, các số thứ ba đến method thực sự chỉ định tên rõ ràng để sử dụng cho bộ sưu tập. Nếu không có tên giả định này theo các quy tắc mặc định sẽ là "todos".

Sử dụng một trong hai phương pháp để yo làm cho họ phù hợp.

+0

Đã lưu 3-4 giờ trong cuộc đời tôi. :) – BangOperator

+0

Brilliant :): D –

+0

tôi phải đối mặt với vấn đề tương tự trong 2 giờ, tôi cần thêm "s" sau tên của bộ sưu tập của tôi, omg ... TY – PayteR

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