तो मेरे साहस को नोड में सभी चीजों में शुरू करना। मैं जिस टूल को सीखने की कोशिश कर रहा हूं वह एक है Sequelize। तो मैं पर आरंभ होता है कि मैं क्या करने की कोशिश कर रहा था:वर्गमार्ग वर्ग बनाम उदाहरण उदाहरण
'use strict';
var crypto = require('crypto');
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
username: DataTypes.STRING,
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
salt: DataTypes.STRING,
hashed_pwd: DataTypes.STRING
}, {
classMethods: {
},
instanceMethods: {
createSalt: function() {
return crypto.randomBytes(128).toString('base64');
},
hashPassword: function(salt, pwd) {
var hmac = crypto.createHmac('sha1', salt);
return hmac.update(pwd).digest('hex');
},
authenticate: function(passwordToMatch) {
return this.hashPassword(this.salt, passwordToMatch) === this.hashed_pwd;
}
}
});
return User;
};
मैं जब बनाम instanceMethods classMethods का उपयोग करने पर उलझन में हूँ। मेरे लिए जब मैं createSalt() और हैशपास्वर्ड() के बारे में सोचता हूं तो क्लास विधियां होनी चाहिए। वे सामान्य हैं और अधिकांश भाग के लिए वास्तव में विशिष्ट उदाहरण के साथ कुछ भी नहीं करना है, जिनका उपयोग सामान्य रूप से किया जाता है। लेकिन जब मैंने classMethods मेंSalt() और हैशपैसवर्ड() बनाया है, तो मैं उन्हें exampleMethods से कॉल नहीं कर सकता।
मैं निम्नलिखित के रूपांतरों की कोशिश की है: अभ्यस्त काम नीचे
this.createSalt();
this.classMethods.createSalt();
createSalt();
कुछ की तरह है और मैं शायद बस कुछ सरल समझ नहीं कर रहा हूँ।
authenticate: function(passwordToMatch) {
console.log(this.createSalt());
return this.hashPassword(this.salt, passwordToMatch) === this.hashed_pwd;
}
कोई भी संकेत/सुझाव/दिशा बहुत सराहना की जाएगी!
मेरे लिए समझ में आता है और thats क्या मैं एक तरह से इस तरह के makeSalt() और hashPassword (के रूप में लगा तो सामान्य कार्यों) वर्ग तरीकों से किया जाना चाहिए, क्योंकि वे वास्तव में है कि के रूप में मेरे लिए काम किया विशिष्ट उदाहरण के साथ कुछ भी नहीं करना है। तो अब कहा कि मेरी असली समस्या मुझे लगता है कि मेरे उदाहरण के अंदर एक वर्ग मेथॉन्ड को कॉल करने में सक्षम नहीं है विधि और यह सुनिश्चित नहीं है कि सौदा क्या है। – Silent
मुझे आईआरसी पर मिला और वे मेरी मदद करने में सक्षम थे। यह थोड़ा अलग है तो मैं अन्य भाषाओं में भी उपयोग कर रहा हूं लेकिन यह सिर्फ सीखने की प्रक्रिया का हिस्सा है! चूंकि इसकी कक्षा विधि यह मॉडल का हिस्सा बन जाती है, इसलिए आपको "इस" जैसे कुछ का उपयोग नहीं करना पड़ेगा। आप बस इसे "User.getSalt()" कहते हैं, इसलिए यह सब अब काम कर रहा है जैसा कि मैंने उम्मीद की थी! – Silent
मैं आपकी मदद की सराहना करता हूं! – Silent