2014-01-03 2 views
2

Я нахожу и получаю один документ обратно. У меня также есть набор правил монго. Мне нужно сопоставить документ с этим набором правил, и если документ соответствует правилу, добавьте имя правила в под-документ имени правила.Как сопоставить документ mongo с массивом правил один за другим

Предположим, что документ этот -

var randomGuy = { name: "Random Guy", age: 45, state: "assam", profession: "coder", ruleNames: [] }; 

У меня есть, что хранится в переменной JavaScript. У меня также есть набор правил, преобразуется в MongoDB правил -

var rules = [ 
     {'rule1': { name: /R*/i, age: { $gt: 40 } }}, 
     {'rule2': { state: "karnataka" }}, 
     {'rule3': { age: { $lt: 60 } }}, 
     {'rule4': { $or: [ { profession: 'coder' }, { profession: 'programmer' } ] }} 
    ]; 

Я хочу, чтобы петли по правилам, соответствует объекту randomGuy против каждого и добавить имена правил собственности ruleNames в randomGuy в. Таким образом, конечный объект randomGuy выглядит следующим образом -

var randomGuy = { name: "Random Guy", age: 45, state: "assam", profession: "coder", ruleNames: ['rule1', 'rule3', 'rule4'] }; 
+0

Я думаю, вам понадобится реализовать механизм правил, который понимает используемый вами формат правил. – robertklep

+0

Возможный дубликат [какая библиотека Javascript может оценивать предикаты запросов, специфичные для MongoDB, для объекта?] (Http://stackoverflow.com/questions/15397668/what-javascript-library-can-evaluate-mongodb-like-query-predicates -against-an-ob) – Stennie

ответ

2

Я думаю, я нашел ответ в sift.js - https://github.com/crcn/sift.js

Все, что нужно будет сделать, это применить правила, как просеять фильтры на объекте randomGuy.

var randomGuys = [randomGuy]; 
var ruleName, ruleString; 
rules.forEach(function(rule) { 
    ruleName = Object.keys(rule)[0]; 
    ruleString = rule[ruleName]; 
    if(sift(ruleString).test(randomGuy)) { 
     randomGuys.ruleNames.push(ruleName); 
    } 
} 
+0

Nice lib, не знал, что он существует :) – robertklep

+0

Получил это из этого ответа SO - http://stackoverflow.com/questions/15397668/what-javascript-library-can-evaluate-mongodb -like-query-predicates-to-an-ob Этот парень задал правильный вопрос;) –

 Смежные вопросы

  • Нет связанных вопросов^_^