I have a object, and I need to call a method of it from another method inside the same object. I'm using ES6 syntax:
var user = {
login(name, password) {
return new Promise(function(resolve, reject) {
console.log('ready to find');
var args = {
'name': 'users',
'query': {
'name': name
},
'options': {
'_id': 1,
'name': 1,
'password': 1
}
};
db.find(args).toArray().then(function(result) {
var auth = {};
if(result[0] && result[0].password == password) {
console.log('user ok');
auth = {
ok: 1,
userID: result[0]._id,
user: result[0].name
};
} else {
console.log('user wrong');
auth = {
ok: -1,
errmsg: 'password wrong'
};
}
resolve(auth);
})
.catch(function(err) {
reject(err);
});
});
},
find(userID) {
console.log("USER: find");
return new Promise(function(resolve, reject) {
var args = {
'name': 'users',
'query': {
'_id': userID
},
'options': {
'name': 1
}
};
db.find(args).toArray().then(function(result) {
var findResult = {};
if(result[0]) {
findResult.ok = 1;
findResult.user = result[0].name;
} else {
findResult.ok = -1;
findResult.errmsg = 'not found';
}
return findResult;
})
.catch(function(err) {
throw err;
});
});
},
authenticate(session) {
return new Promise(function(resolve, reject) {
console.log("USER: authenticate");
if(session.cookie && session.userID && session.user) {
var _expires = session.cookie._expires;
var userID = session.userID;
var user = session.user;
if(new Date(_expires) > new Date(Date.now())) {
console.log("USER: session isn't expired");
console.log(userID);
user.find(userID);
}
}
});
},
};
I can call the user.find()
outside, but can't call it from the user.anthenticate()
. The console.log("USER: session isn't expired");
and console.log(userID);
worked well, but the console.log("USER: find");
didn't