2010-09-14 95 views
9

更新:已經有一段時間了。但當時決定不使用貓鼬。主要原因是我們無法真正想出使用mongo和javascript時使用ORM的重要原因。尋找貓鼬「hello world」的例子


我一直在努力與貓鼬數據庫/模型,它基本上是一個用戶數據庫,其中的用戶名是獨一無二的。聽起來很簡單,但由於某種原因,我一直無法這樣做。

我已經得到了到目前爲止是這樣的:

var mongoose = require('mongoose').Mongoose, 
    db = mongoose.connect('mongodb://localhost/db'); 

mongoose.model('User', { 
    properties: [ 
     'name', 
     'age' 
    ], 

    cast: { 
     name: String, 
     age: Number 
    }, 

    //indexes: [[{name:1}, {unique:true}]], 
    indexes: [ 
     'name' 
    ] 
    /*, 
    setters: {}, 
    getters: {}, 
    methods: {} 
    */ 
});  

var User = db.model('User'); 

var u = new User(); 
u.name = 'Foo'; 

u.save(function() { 
    User.find().all(function(arr) { 
     console.log(arr); 
     console.log('length='+arr.length); 
    }); 
}); 
/*User.remove({}, function() {});*/ 

這是行不通的。數據庫被創建好,但用戶名不是唯一的。任何幫助或知識我做錯了什麼?

回答

13

您需要定義架構。試試這個:(

var mongoose = require('mongoose').Mongoose, 
db = mongoose.connect('mongodb://localhost/db'), 
Schema = mongoose.Schema; 

mongoose.model('User', new Schema({ 
    properties: [ 
     'name', 
     'age' 
    ], 

    [...] 
}));  
+2

爲什麼會這樣得到否決的用戶?傳遞一個標準的JavaScript對象到mongoose.model,而不是Schema的一個實例 – evilcelery 2011-04-06 20:54:52

+0

剛剛投了票@evilcelery ;-) – AmirHd 2013-08-27 09:39:55

2

先給在VAR貓鼬=正確的道路需要( '貓鼬')。貓鼬,

。它的工作對我來說..

我的代碼

require.paths.unshift("/home/LearnBoost-mongoose-45a591d/mongoose"); 
var mongoose = require('mongoose').Mongoose; 


var db = mongoose.connect('mongodb://localhost/db'); 


mongoose.model('User', { 
      properties: ['first name', 'last name', 'age', 'marriage_status', 'details', 'remark'], 


}); 

var User = db.model('User'); 
var record = new User(); 

record.first name = 'xxx'; 
record.last name = 'xxx'; 
record.age = 'xxx'; 
record.marriage_status = 'xxx'; 
record.details = 'xxx'; 
record.remarks = 'xxx'; 

record.save(function() { 
User.find().all(function(arr) { 

    console.log(arr); 
    console.log('length='+arr.length); 



}); 

}); 


//User.remove({}, function() {}); 

編譯它與節點filename.js 好運..

1

你應該運行你的應用程序在之前定義的唯一索引第一次。否則,你需要刪除你的收藏並重新開始。另外,當'user1'已經存在時,當你嘗試保存{name:'user1'}時,貓鼬不會拋出錯誤。

5

對於貓鼬2.7(在節點U測試0.8):

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 

var db = mongoose.connect('mongodb://localhost/db'); 

var User = new Schema({ 
    first_name: String, 
    last_name: String 
}); 

var UserModel = mongoose.model('User', User); 

var record = new UserModel(); 

record.first_name = 'hello'; 
record.last_name = 'world'; 

record.save(function (err) { 

    UserModel.find({}, function(err, users) { 

    for (var i=0, counter=users.length; i < counter; i++) { 

     var user = users[i]; 

     console.log("User => _id: " + user._id + ", first_name: " + user.first_name + ", last_name: " + user.last_name); 

    } 

    }); 

});