Meteor + React - загрузка против 404 при доступе к документу - PullRequest
0 голосов
/ 23 июня 2018

У меня есть следующий код:

import React, { Component } from 'react';
import { withTracker } from 'react-meteor-data';
import Auctions from '../collections/Auctions';

class AuctionPage extends Component {
    render() {
        return (
            <div>
                {this.props.auction? this.props.auction.name : 'Loading'}
            </div>
        );
    }
}

export default withTracker((props) => {
    const auction = Auctions.findOne({_id: props.match.params.id});
    return {
        auction,
    };
})(AuctionPage);

У меня все еще есть пакет автопубликации, и этот компонент визуализируется по следующему (динамическому) маршруту (я использую реагирующий маршрутизатор для маршрутизации)

<Route path={'/auction/:id'} component={AuctionPage} />

Все работает нормально, если в коллекции найден документ с этим идентификатором.Атрибут имени отображается, если документ найден в коллекции, а в противном случае отображается «Загрузка».Вот где настоящая проблема.Что если переданный в качестве параметра id не имеет соответствующего документа в коллекции?Он отображает «Загрузка» навсегда.

Как можно вместо этого отобразить 404?

1 Ответ

0 голосов
/ 23 июня 2018

Даже используя автопубликацию, вы не можете знать наверняка без подписки, если ваш документ отсутствует, из-за того, что он еще не загружен или из-за отсутствия в коллекции.

По сути, автоматическая публикация создает для каждой коллекции публикацию по умолчанию для всех клиентов, которая немедленно возвращает все документы.

Однако большое количество документов может привести к тому, что вы не будете знать, загружен ли документ по Id.

В качестве обходного пути вы можете просто создать простую публикацию, возвращающую все документы и подписаться на нее.

...