從貓鼬主頁:
貓鼬提供了一個直接的,基於架構的解決方案, 建模應用程序數據和包括內置型鑄造, 驗證,查詢建設,業務邏輯掛鉤和更多,出 框。
Mongoose無法從可能唯一的文檔集合中推斷出模式。 MongoDB不會對存儲在集合中的文檔執行模式。
所以,貓鼬加於本地的NodeJS驅動程序(here),很多發現更高效的一層。使用Node.JS時,不要求使用MongoDB。
貓鼬從根本上需要兩個東西的工作:
- 模式==這定義了文檔結構(reference)。您可以添加validation,新方法,添加虛擬屬性,使用data types,建立references到其他集合(模型)。
- 型號==這是然後在運行時用來表達對集合(reference)查詢類。 Schema定義用於構建模型。
所以,你要粘貼的樣品中看到的,存在定義的小貓Schema
,然後創建一個Model
Kitten
。使用模式和模型的好處在於,Mongoose會強制執行可用的屬性/字段。
你只定義了Schema
S和Model
一度在應用程序中。所以,通常在應用程序啓動時,您需要執行代碼來定義它們,然後在整個應用程序生命週期中根據需要使用Model
實例。
有很多種,你會想可能使用貓鼬更多的理由。
儘管你是絕對正確的,但你可以直接使用更直接的東西,而無需使用NodeJS本地驅動程序的模式。語法是類似於你顯示什麼,但稍微複雜一些:
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
if(err) { return console.dir(err); }
var collection = db.collection('kittens');
collection.find().toArray(function(err, kittens) {
// here ...
});
});
,而不是簡單的:
Kitten.find(function(err, kittens) {
});
另外,使用貓鼬的時候,你可能會發現,編寫更復雜的查詢是更容易編寫和閱讀:
Kitten.find().where('name', 'Harold').exec(/*callback*/);
我建議通過更多的文檔閱讀,以獲得更好的手感的框架以及它是否滿足您的需求很好地匹配。不幸的是,這些文檔有點分散,但如果您仔細閱讀Guide
標題的小標題,您將獲得大量可用信息。
db.Kittens.find()將是同步的 –