Объект не найден, используя parse nodejs - PullRequest
0 голосов
/ 23 февраля 2020

Я недавно использую синтаксический анализ, и я пытаюсь получить объекты из моей базы данных и отображать их с помощью e js, используя для l oop на моей веб-странице. Я использую back4app в качестве базы данных.

Вот что я делаю:

const Car = Parse.Object.extend('Vehicle');
const query = new Parse.Query(Car);

app.get('/', function(req, res){  

   const VehicleInfo = [
        {
            VehicleName: query.get('Name'),
            Description: query.get('Description'),
            Price: query.get('Price'),
            Rating: query.get('Rating'),
            Route: query.get('Route'),
            PassengerAmount: query.get('PassengerAmount')
        }                         
    ]

    try{
    res.render('index', {
        title: 'mainPage',
        VehicleData: VehicleInfo

    });
    }catch(error){
        throw error.message;
    }

});

Я запрашиваю это, и все 5 моих транспортных средств отображаются в console.log, но при попытке чтобы сделать то же самое в моем .e js файле, это отображается, и только один div показывает

введите описание изображения здесь

Вот как я использую для л oop

    <% for (var CarInfo of VehicleData) { %>
            <div class="row">

                <div class="col-lg-4 col-md-6">

                    <!-- Car Item-->
                    <div class="rn-car-item">
                        <div class="rn-car-item-review">
                            <div class="fas fa-star"></div> <%= CarInfo.Rating %>

                        </div>
                        <div class="rn-car-item-thumb">
                            <a href="/car-single">
                                <img class="img-fluid" src="/images/car-1.jpg" alt="Black Sedan" srcset="/images/car-1.jpg 1x, /images/car-1@2x.jpg 2x"/>
                            </a>
                        </div>
                        <div class="rn-car-item-info">
                            <h3>
                                <a href="/car-single"> <%= CarInfo.VehicleName %></a>

                            </h3>                                                               

                            <p>Descripcion: <%= CarInfo.Description %></p>
                            <div class="rn-car-list-n-price">
                                <ul>
                                    <li>Ruta: <%= CarInfo.Route %></li>
                                    <li>Cantidad de Pasajeros: <%= CarInfo.PassengerAmount %></li>
                                </ul>
                                <div class="rn-car-price-wrap">
                                    <a class="rn-car-price" href="/car-single">
                                        <span class="rn-car-price-from">Desde</span>
                                        <span class="rn-car-price-format">
                                            <span class="rn-car-price-amount">$<%= CarInfo.Price %></span>
                                            <span class="rn-car-price-per">/day</span>
                                        </span>
                                    </a>
                                </div>
                            </div>
                        </div>
                    </div>
                    <!-- End Car Item-->                     
                </div>

            </div>
            <% } %>

1 Ответ

0 голосов
/ 24 февраля 2020

Я уверен, что ваш код работает не так, как и в консоли. Вам нужно запустить find или first для извлечения объектов.

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

Вам нужно сделать

const VehicleInfo = [];
const query = new Parse.Query(Car);
query.find().then(result => {
    result.forEach(vehicle => {
        VehicleInfo.push({
            VehicleName: result.get('Name'),
            Description: result.get('Description'),
            Price: result.get('Price'),
            Rating: result.get('Rating'),
            Route: result.get('Route'),
            PassengerAmount: query.get('PassengerAmount')
        });
    });
}).catch(error => {
    console.error('error fetching objects', error);
});

В качестве альтернативы вы можете await результат для более чистого кода :

app.get('/', async function(req, res) {
    const VehicleInfo = [];
    const query = new Parse.Query(Car);
    try {
        const result = await query.find();
        result.forEach(vehicle => {
            VehicleInfo.push({
                VehicleName: result.get('Name'),
                Description: result.get('Description'),
                Price: result.get('Price'),
                Rating: result.get('Rating'),
                Route: result.get('Route'),
                PassengerAmount: query.get('PassengerAmount')
            });
        });
    } catch (error) {
        console.error('error fetching objects', error);
    }
});

Подробнее об обещаниях в JavaScript

...