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

时间:2017-05-14 13:14:49

标签: node.js mongodb reactjs mongoose passport.js

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不是函数”?

P.S:如何正确地将数据发送到用户localStorage?

1 个答案:

答案 0 :(得分:1)

您通过分配vkUser来覆盖vkUser = { access_token: params.access_token }。因此save函数丢失了。

将其更改为:

 vkUser.access_token = params.access_token