在我的node.js应用程序中,我正在实现“记住我”功能。到目前为止,一切都很顺利,但我有猫鼬的问题。我想做什么:我有一个名为Token
的模型,使用此模式:
var TokenSchema = mongoose.Schema({
token: { type: String },
uid: { type: Schema.Types.ObjectId, ref: 'User' }
});
这只是一个将cookie令牌映射到UserId的小集合。然后我在这里有这个功能:
function consumeRememberMeToken(token, fn) {
Token
.findOne({ 'token': token }, (err, result) => {
return (result===null)?fn(null, null):fn(null, result.uid);
})
.remove();
}
它应该做什么,是这样的:找到给定uid
字符串的token
并返回它(如果有结果)。 但此功能还应在返回uid
后立即删除该条目。
目前,找到的令牌uid
中的result
被正确返回,但它(结果令牌)不会被上述代码从集合中删除。我不明白如何在获取它并使用检索到的uid
后立即将其删除。我是函数式编程的新手,我不明白删除令牌的方式和位置。
答案 0 :(得分:1)
答案 1 :(得分:0)
Token.findOne({ 'token': token }, (err, result) => {
if(err || !result) return fn(err || "error", null);
else{
var uid = result.uid;
result.remove(function(){
return fn(null, uid);
});
}
})