【问题标题】:Authentication in MEANJS for new moduleMEANJS 中新模块的身份验证
【发布时间】:2017-08-29 07:21:18
【问题描述】:

我在 MEAN 堆栈中处理身份验证有问题。

确实,我创建了一个名为“Wallet”的新模块,这是它的模型:

var WalletSchema = new Schema({
  created: {
    type: Date,
    default: Date.now
  },
  bitcoinAddresses: {
    type: Object,
    default: []
  },
  fringe: {
    type: Array
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User',
    required: 'User id cannot be blank'
  }
});

所以它引用了用户 ID,我想在我的页面加载时自动加载钱包。

我的意思是一切正常,除了当我刷新我的页面时,用户被正确加载,但钱包却没有导致错误。

有没有办法在加载用户的同时加载我的钱包?

【问题讨论】:

    标签: javascript angularjs node.js meanjs


    【解决方案1】:

    如果您在 Wallet 中设置引用,则应首先获取 Wallet。这个例子假设你使用猫鼬。

    Wallet.findOne({'_id': id}).
     populate({
           path: 'user',
           model: 'User'
    }).exec().
    then(function (wallet) {//Here is a wallet object with user filled.}).
    catch(function(err){//Handle the error});
    

    附带说明:在用户架构中引用钱包可能会更好。

    【讨论】:

    • 是的,那是我想在页面开头加载钱包。但是在 User 模型中也引用了钱包。我可以直接从用户模型加载它吗?
    • 所以你已经设置了从用户到钱包以及从钱包到用户的链接?您可以对用户架构执行完全相同的操作,只需更改填充路径和模型。
    • 是的,有一个链接,但我真的不明白填充的工作原理。它会在加载用户时初始化我的钱包??
    • 当您通常在没有填充的情况下查询用户时,对 Wallet 的引用将只包含它的 ObjectId。填充用引用的电子钱包文档替换此字段。您可以在填充查询中添加一个选择以选择所需的字段。我建议看看这个:mongoosejs.com/docs/populate.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2020-12-03
    • 2013-02-19
    相关资源
    最近更新 更多