2015-03-20 3 views
0
{ 
"_id" : 1, 
"password" : "$2a$10$09XFcS7kSOpZBepd/uS8sO/5a7WU2B68L18TrC/EJ2Jjf3zX3mc8C", 
"username" : "neetu", 
"name" : "neetu12", 
"__v" : 3, 
"Address" : "America", 
"DOB" : ISODate("2000-03-05T00:00:00.000Z"), 
"Email" : "[email protected]", 
"isActive" : false, 
"joiningDate" : ISODate("2015-03-01T00:00:00.000Z"), 
"salary" : "20000", 
"profile" : ObjectId("54f02d1538f604c0116752e2"), 
"reciptBook" : [ 
    { 
     "startingReciptNumber" : 3001, 
     "endingReciptNumber" : 3100, 
     "_id" : ObjectId("550aa7a5a6d7f2c80f028154") 
    }, 
    { 
     "startingReciptNumber" : 9000, 
     "endingReciptNumber" : 9099, 
     "_id" : ObjectId("550bcbb3544cdb60102ac736") 
    } 
]} 

У меня есть такой документ в пользовательской схеме. То, что я хочу здесь, - это получить окончаниеReciptNumber из массива reciptBook в пользовательской схеме, где лежит это значение recipt (которое предоставляется мной).Хотите найти значение, которое находится в пределах диапазона полей массива

Для этого я написал код в бэкэнде:

apiRouter.route('/users/:_id/:reciptValue') 
    .get(function(req, res){ 
    User.find({'_id':req.params._id,'reciptBook.startingReciptNumber':{$gte  : +req.params.reciptValue}}, function(err, obj){ 
      if(err) res.json(err); 
      console.log(obj); 
      res.json(obj); 
      }); 
     }); 

Здесь я передаю идентификатор зарегистрированного пользователя и значение recipt, для которых массив reciptBook будет иметь это значение в диапазоне startingreciptNumber и finalReciptNumber. Но файл api ничего не возвращает. Где я здесь ошибаюсь.

ответ

0

Я думаю, что вы неправильно используете функцию поиска. Это намного мощнее, чем вы думаете: p

Фактически, поиск принимает только один аргумент, который является обратным вызовом, который будет вызываться с тремя аргументами: элементом для тестирования, индексом этого элемента и массивом. Вы вернете true, если проверенный элемент действителен. документация здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

Так в основном, то, что вы хотите сделать, это:

var myElement = User.find(function(element, index, array){ 
    return element["_id"] == req.params._id && element.reciptBook.startingReciptNumber == {$gte: +req.params.reciptValue}; 
}) 

Это должно вернуть первое соответствующее значение в массиве или неопределенный элемент не была найдена.

+0

Я узнал новый способ использования функции поиска. –

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