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

Posted

技术标签:

【中文标题】User.save 到 DB(使用 mongoose)不是一个函数【英文标题】:User.save to DB (use mongoose) is not a function 【发布时间】:2017-10-13 08:13:04 【问题描述】:
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】:

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

改成:

 vkUser.access_token = params.access_token

【讨论】:

谢谢,这很有帮助。给localStorage不发送数据,为什么? 我不确定节点中的localStorage。这不是浏览器的事情吗? 需要将数据从节点发送到localStorage,用于react.js(react 将获取此数据进行验证) 哦,我明白了。我不太了解反应 :) 我建议您用适当的标题问另一个与此特别相关的问题。我相信它会让某人帮助你。

以上是关于User.save 到 DB(使用 mongoose)不是一个函数的主要内容,如果未能解决你的问题,请参考以下文章

[MongoDB]mongo命令行工具

mongoose基本增删改查

在codeigniter mongodb中插入函数的位置

django 中 User.objects.create_user() vs User.objects.create() vs User().save() 的区别

user.save 在控制台中返回 false,但通过 UI 完成时返回 true

将 2 列中的 json 数据与模式中的数据进行比较,并将最新数据覆盖为 mongoos 中的主要数据