簡體   English   中英

在導出的Mongoose模型中使用Mongoose模式函數

[英]Using a Mongoose Schema Function Inside Of An Exported Mongoose Model

我最近一直致力於一個身份驗證系統,如果沒有給定ID的用戶存在, 或者在具有現有ID的用戶中加載,則應該創建一個新用戶。 我也已經發現你可以通過使用返回用戶是否存在ID

User.count({_id: id}, function (err, count){ 
    if(count > 0){
      // User exists, continue with loading data
    } else {
      // User does not exist, create one
    }
  });

用戶是導出的Mongoose模型mongoose.model('User', UserSchema);

如果我現在在我的app.js中創建了一個函數existWithId(id),它將完美地工作 (判斷前面提到的代碼工作得很好 ),但我想將此函數移動到我的user.js模型(它包含Mongoose / MongoDB代碼),所以我只為那個特定的模型。 每當我嘗試使用時都這樣做

UserSchema.statics.existsWithId = function(id) {
  this.count({_id: id}, function (err, count){ 
    return count > 0;
  }); 
}

或者類似的方法,一旦我在app.js中運行它,它將只返回undefined或錯誤。

注意: 如果這是一個簡單甚至是愚蠢的問題,我很抱歉,但考慮到使用Mongoose進行DB管理,我很新,雖然我確實有一些 JS的經驗,但我並不是一個專業人士。

如果您有任何人需要提供額外的代碼來回答問題,請隨時問我,我會這樣做。 此外,我還不能+回答答案,但我總是很感激他們:)

您的existsWithId方法以異步方式返回一個值,因此您可以對其進行回調以獲得結果,如下所示:

UserSchema.statics.existsWithId = function(id, cb) {
    this.count({ _id: id }, function(err, count) {
        cb(err, count > 0);
    });
}

User.existsWithId("5882c3be5aad09028d4d8b46", function(err, res) {
    console.log(res);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM