User.save到DB(使用mongoose)不是一个函数

UserModelVk.findOne({vkontakteId: profile.id}, function(err, vkUser){ if(err){ return done(err) } if(!vkUser){ const user = new UserModelVk({ vkontakteId: profile.id, name: profile.displayName, access_token: params.access_token }) user.save(function(err) { if (err){ log.error(err) } localStorage.setItem('username', user.vkontakteId); localStorage.setItem('key', user.access_token) return done(err, user); }); } else { vkUser = { access_token: params.access_token } vkUser.save(function(err) { if (err){ log.error(err) } localStorage.setItem('key', vkUser.access_token) return done(err, vkUser); }); localStorage.setItem('username', vkUser.vkontakteId); return done(err, vkUser); } }) 

在这里,我检查有没有用户在我的数据库。 如果没有:注册用户(并发送给他他的令牌),如果有:更新令牌(并发送给他更新的令牌)。

为什么“.save不是一个function”?

PS:以及如何正确地发送数据到用户localStorage?

您正在通过分配vkUser = { access_token: params.access_token }来覆盖vkUsersavefunction因此丢失。

将其更改为:

  vkUser.access_token = params.access_token