2010-09-14 6 views
9

अद्यतन: कुछ समय बीत गया। लेकिन फिर वापस मोंगोस का उपयोग न करने का फैसला किया। मुख्य कारण यह है कि हम वास्तव में मोंगो और जावास्क्रिप्ट का उपयोग करते समय ओआरएम का उपयोग करने के लिए एक महान कारण के साथ नहीं आ सकते थे।मोंगोस "हैलो वर्ल्ड" उदाहरण के लिए खोज रहे हैं


मैं मोंगोस के साथ एक डेटाबेस/मॉडल बनाने की कोशिश कर रहा हूं जो मूल रूप से केवल एक उपयोगकर्ता डेटाबेस है जहां उपयोगकर्ता नाम अद्वितीय है। काफी आसान लगता है, लेकिन किसी कारण से मैं ऐसा करने में असमर्थ रहा हूं।

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

आपको स्कीमा को परिभाषित करने की आवश्यकता है। इस प्रयास करें: नेवला 2.7 के लिए (

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

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

    [...] 
}));  
+2

उदाहरण के एक सेट अपलोड क्यों इस के ख़िलाफ़ मतदान हो था उपयोगकर्ता? एक मानक जावास्क्रिप्ट ऑब्जेक्ट को mongoose.model में पास कर रहा था, स्कीमा – evilcelery

+0

का उदाहरण नहीं, बस @ एविलसेलरी वोट दिया गया ;-) – AmirHd

2

वर नेवला = में सही रास्ते दे रही है ('नेवला')। नेवला,

की आवश्यकता होती है की कोशिश करो। यह मेरे लिए काम किया ..

#

मेरी कोड

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'} को सहेजने का प्रयास करते समय mongoose कोई त्रुटि नहीं फेंक देगा।

5

(नोड वी में परीक्षण किया 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); 

    } 

    }); 

}); 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^