Разработвам приложение, базирано на mongo и sails, и тествам как работи актуалното обновяване на платната.
Сега използвам платна 0.9.16, но се интересувам и от отговори за ветрилата 0.10.
Искам списъкът да бъде актуализиран при нови документиса създадени в съответната колекция. Това работи, когато добавям документи чрез гнезда за платна, изпращайки съобщение. В този случай виждам други клиенти, получаващи съобщение, а списъкът от страна на клиента се актуализира.
Има писмена външна служба на монгобаза данни трудно, така че колекцията се разраства през цялото време. Новите елементи, създадени директно от външната услуга в базата данни, не се уведомяват за слушане на клиенти, така че трябва да обновя уеб страницата, за да покажа тези елементи.
въпроси:
- ли трябва да работят уведомления за създаването на бази данни, когато тези творения не идват от самите платна?
- ако да, това изисква ли специална конфигурация?
- ако не, какъв би бил препоръчителният начин да се запази списъкът с клиентска страна за актуализирана колекция, когато базата данни се променя?
Наздраве
Отговори:
3 за отговор № 1Много интересен въпрос, макар и не необичаен: момчетата от метеор имаха същия проблем. По принцип, без да гледате БД, можете дори да мащабирате вашето приложение хоризонтално, тъй като един сървърен процес няма да има представа какви промени в данните са направени от друг.
Първоначално те са го подправили чрез анкетиранена всеки 10 секунди. Очевидно е, че това не е най-доброто решение, така че завършиха с още едно (което също може да работи за Sails): сега те следят MongoDB oplog и да изстрелва актуализация, когато има промяна в съответната колекция.
За да отговорите на въпросите си:
- AFAIK, процесът на Sails няма никаква представа за каквито и да било външни промени в DB;
- така, нищо за конфигуриране;
- начин за проследяване на външни актуализации на DB (MongoDB) ще използва един от наблюдателите на oplog, които можете да намерите в npm (напр. това или един от тезии т.н.) да слушате промените и да задействате актуализации, когато има нужда.
За съжаление, няма готови за употреба решения тук, но се надявам най-малкото, че сега имате идея как да я накарате да работи.