2017-02-07 14 views
1

私はこれを探していましたが、理解できませんでした。 mongooseを使ってMongoDBデータにアクセスするためのnode.js上のアプリケーションがあります。mongoose.model.find(コールバック) - どのように動作しますか?

//contents of book.js 
var Book = module.exports = mongoose.model('Books',genreSchema) 
Book.getBooks = function(call,limit){ 
       Book.find(call).limit(limit); 
       console.log(call.toString()); 
       } 


//contents of app.js 
mongoose.connect('mongodb://localhost/bookstore'); 
var db = mongoose.connection;  
Books = require('./models/book'); 
app.get('/api/book', function(req,res){ 
     Books.getBooks(function(err, book){ 
        if(err){ throw err;} 
          res.json(book); 
        }); 
     }); 

call.toString()は、app.jsにコールバック関数の定義を返します。 Book.find(call)は、内部的にコレクション名と一致するクエリを実行します(ただし、コレクション名を明示的に指定しません)が、レコードを誤ってフェッチする方法はありますか?

使用するdb接続を除いて、DBからフェッチされるものは絶対に参照せずに、定義をfind()に渡します。

これはどのように機能しますか?

ありがとうございます!

答えて

0

あなたが使用してBookモデル定義:

var Book = module.exports = mongoose.model('Books', genreSchema) 

マングースはbooksのコレクション名を取得するために'Books'の同棲-下と複数形モデル名を取りますが。

明示的modelに、オプションの三番目のパラメータを経由して使用するコレクション名を定義することができます。

var Book = module.exports = mongoose.model('Books', genreSchema, 'books') 
関連する問題