2017-02-26 164 views
0

我需要使用貓鼬查詢來驗證對象。使用貓鼬查詢驗證對象

例如,我有對象:

const user = {username: 'foo', email: '[email protected]', type: 2}; 

和貓鼬查詢

const query = { type: { '$in': [ 2, 1 ] }; 

所以我需要的東西是這樣的:

const isValid = validate(user, query); // true 
+0

你的意思是你想創建一個自定義的'validate'功能提供'object'和'query'型 –

+0

是的,但如果已經實現瞭解決方案會更好。 –

+1

我不明白爲什麼你需要貓鼬查詢,當你已經有了這個對象。只需使用'if-else'語句並檢查對象。 –

回答

0

要驗證你的數據,你可以使用built-in validators,如果您需要指定範圍:

var DataSchema = new mongoose.Schema({ 
    username: String, 
    email: String, 
    type: { 
     type: Number, 
     min: [1, 'Error type must be > 0'], 
     max: [2, 'Error type must be < 3'] 
    } 
}); 

custom validators,如果你想在一個數組來檢查值:

var acceptedTypes = [2, 1]; 

var DataSchema = new mongoose.Schema({ 
    username: String, 
    email: String, 
    type: { 
     type: Number, 
     validate: { 
      validator: function(v) { 
       for (var i = 0; i < acceptedTypes.length; i++) { 
        return (acceptedTypes[i] == v); 
       } 
       return false; 
      }, 
      message: '[type] is not an accepted value' 
     } 
    } 
}); 
+0

謝謝,但這不是我所需要的。我有一個應用程序與5種類型的用戶。類型4的用戶可以創建任何類型的用戶,但類型3的用戶只能創建小於3的類型的用戶。所以我需要在創建之前用查詢驗證對象。這是另一種驗證 –