MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Trả về kết quả mongoose trong truy vấn tìm đến một biến

Có một số cách để đạt được những gì bạn muốn.

1. Sử dụng truy vấn Mongoose

Trong chiến lược này, hàm của bạn trả về một truy vấn Mongoose mà sau này bạn có thể sử dụng để gọi phương thức exec và sử dụng nó để nhận được kết quả.

function getJedisQuery(name){
   var query = Jedi.find({name:name});
   return query;
}

Sau đó, bạn có thể sử dụng nó chỉ cần thực hiện:

var query =  getJedisQuery('Obi-wan');
query.exec(function(err,jedis){
   if(err)
      return console.log(err);
   jedis.forEach(function(jedi){
      console.log(jedi.name);
   });
});

2. Sử dụng các đối tượng giống như Mongoose Promise

Moogose cung cấp hỗ trợ cho các đối tượng giống như lời hứa. Tất cả những gì bạn phải làm là một cái gì đó tương tự như những gì tôi đã làm ở trên, nhưng lần này, bạn gọi exec phương thức không có lệnh gọi lại.

function getJedisPromise(name){
   var promise = Jedi.find({name:name}).exec();
   return promise;
}

Sau đó, bạn có thể sử dụng nó bằng cách đơn giản thực hiện:

var promise = getJedisPromise('Luke');
promise.then(function(jedis){
   jedis.forEach(function(jedi){
      console.log(jedi.name);
   });
})

Như được đánh dấu trong phần bình luận của câu trả lời này, những đối tượng này trên thực tế không phải là lời hứa và điều đó cần được tính đến (xem Truy vấn không phải là lời hứa).

3. Sử dụng Mongoose Streams

Cuối cùng, Mongoose cũng đã hỗ trợ cho các luồng và các luồng là bộ phát sự kiện. Vì vậy, bạn có thể nhận một luồng và sau đó đăng ký các sự kiện 'dữ liệu' và 'lỗi'. Như thế này:

function getjedisStream(name){
   var stream = Jedi.find({name:name}).stream();
   return stream;
}

Sau đó, bạn có thể chỉ cần làm:

var stream = getJedisStream('Anakin');
stream.on('data', function(jedis){
   jedis.forEach(function(jedi){
      console.log(jedi.name);
   });
});
stream.on('error', function(error){
    console.log(error);
});

Nguồn, để tham khảo trong tương lai.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các khóa động sau $ group by

  2. Sao chép / sao chép cơ sở dữ liệu trong MongoDB

  3. nhiều phiên bản của Mongo DB trên cùng một máy chủ

  4. Làm thế nào để truy vấn các đối tượng lồng nhau?

  5. Cú pháp truy vấn riêng biệt trong C # MongoDB