Tôi đang cố gắng thực hiện truy vấn MongoDB find
gốc thông qua thuộc tính collection
của Mongoose Model
. Tôi không cung cấp một cuộc gọi lại vì vậy tôi mong đợi tìm thấy để trả về một đối tượng Cursor
, nhưng nó trả về undefined
thay thế. Theo số Mongoose docs, trình điều khiển đang được sử dụng có thể truy cập qua YourModel.collection
và nếu tôi chuyển sang sử dụng hoàn toàn mã trình điều khiển gốc find
thì trả lại Cursor
để tôi không thể biết được điều gì đang diễn ra.Trình điều khiển gốc tìm thấy từ mẫu Mongoose không trả lại Con trỏ
Dưới đây là một đoạn mã mà tái tạo các vấn đề:
var db = mongoose.connect('localhost', 'test');
var userSchema = new Schema({
username: String,
emailAddress: String
});
var User = mongoose.model('user', userSchema);
var cursor = User.collection.find({});
// cursor will be set to undefined
Tôi đã cố gắng để bước vào mã với nút-thanh tra, nhưng nó không cho tôi. Bất kỳ ý tưởng những gì tôi đang làm sai?
Ah, điều đó giải thích điều đó. Cảm ơn, Aaron. Động lực để thực hiện nó chỉ là một số thử nghiệm trong quá trình kiểm tra hiệu năng. Và khi nó không hoạt động như tôi mong đợi, tôi không thể để nó đi cho đến khi tôi hiểu chuyện gì đang diễn ra. – JohnnyHK
Đối với bất cứ ai tìm thấy điều này và không chắc chắn phải làm gì với nó, bỏ qua mongoose như thế này và sử dụng trình điều khiển gốc sẽ trả về một con trỏ, sau đó bạn cần phải biến thành một mảng nếu bạn muốn sử dụng nó (chẳng hạn như res.json (doc) hoặc những gì có bạn) ... User.collection.find ({}, hàm (err, con trỏ) { cursor.toArray (hàm (err, doc) { // làm công cụ với doc }) ; }); –