2017-02-17 11 views
0

Я думаю об этом часами и днями, но не могу найти решение. Моя проблема в том, что я написал следующий код:

Meteor.methods({ 

    'pushItems': function (itemId) { 
    var specificValue = "12"; 

    if (this.userId) { 
     userManagement.update({ 
     '_id': this.userId 
    }, { 
     $push: { 
      'itemIds': itemId, 
      'values': specificValue 
        } 
       } 
      ); 
     } 
     } 
    }); 

После того как я назвал этот метод, один элемент с «Itemid» хранится в массиве «itemIds» и один элемент хранится с «12» в рамках array "values". Все это происходит в одном объекте пользователя.

Теперь мне нужно написать функцию, которая проверяет, находится ли «12» в пределах «значений» пользователей, и в случае, если это «истина», она должна вытащить хронологический первый добавленный элемент [0] из массива 'itemIds'.

Надеюсь, что я смог правильно объяснить свою проблему и был бы благодарен за любую помощь.

ответ

1

Метод ниже будет найти документ, который содержит аргумент (значение) в values массиве, и будет удалить этот пункт на [0] из массива itemId

Meteor.methods({ 
    'pullItems': function (value) { 
     return userManagement.update(
      { values: value }, 
      { $pop: { itemId: -1 }} 
     ); 
    } 
}); 
+0

Большое спасибо за это. Команда $ pop была найдена и решает не менее 50% моей проблемы. Тем не менее, значение {values: value} не работает («неожиданный идентификатор»), и приложение выходит из строя. Может быть, есть способ с помощью функции «if» и поиска/поиска, чтобы решить эту проблему? На самом деле, мне просто нужно объявить переменную и сказать «если эта переменная находится в« значениях », выполните задание $ pop. Я думаю об этом, но я недостаточно уверен в этом: D Кроме того, у меня есть общий вопрос (я знаю, что это noobish): Что именно означает «возвращение»? Благодарю. – Jaybruh

+1

Без проблем! Я не уверен, почему '' 'values: value''' не работает. Это должно искать массив '' '' '' '' '' объекта для значения 'value''', переданного этому методу. Попробуйте '' '' if''', и если вы не можете управлять этим комментарием здесь, и я помогу вам. Оператор return в основном просто возвращает результат вызова обновления клиенту. Вам действительно не нужно заявление '' 'return''', но я положил его туда как привычка – Sean

+0

А, я знаю, почему ценности не работали. Я просто забыл передать его с Meteor.call. Но он не просто находит «значение» в массиве значений. Он записывает совершенно новый документ в этот пользователь и удаляет другие (я думаю, он удаляет их, потому что мы опускаем $ push или sth.). Тем не менее, мне не нужно писать какой-либо новый документ в пользователя, мне просто нужно знать, есть ли значение там, и если это так, он должен $ pop в 'itemIds'. Я напишу попытку функции 'if' и отправлю ее, чтобы показать, что я имею в виду. Благодаря! – Jaybruh