Skocz do zawartości
  • 0

node.js, bookshelf.js problem z pobieraniem danych z bazy


Pytanie

Witajcie, od jakiegoś czasu piszę backend strony w node.js i dzisiaj natrafiłem na jeden problem, którego nawet stackoverflow nie potrafi rozwiązać (:(). 

Potrzebne pliki:

app.js (model):

const bookshelf = require('../config/bookshelf');

const Product = bookshelf.Model.extend({
    tableName: 'products'
});

module.exports = Product;

index.js (routes):

const express = require('express');
const router = express.Router();
const Product = require('../models/app');
const bookshelf = require('../config/bookshelf');

router.get('/', (req, res) => {
    new Product().count().then((c) => {
        var productsArray = [];
        for (let times = 0; times < c; times++) {
            new Product()
                .query({
                    where: {		//
                        id: times	//jesli jest tak to działa
                    }			//
                })
                .fetch()
                .then((product) => {
                    productsArray.push(new MyProduct(product.get('id'), product.get('name'), product.get('price_old'), product.get('price_new'), product.get('img_url'), product.get('allegro_url'), product.get('sold')));
                    if ((c) - 1 == product.get('id')) {
                        res.render('home', {
                            products: productsArray
                        });
                    }
                });
        }
    });
})

function MyProduct(id, name, price_old, price_new, img_url, allegro_url, sold) {
    this.id = id;
    this.name = name;
    this.price_old = price_old;
    this.price_new = price_new;
    this.img_url = img_url;
    this.allegro_url = allegro_url;
    this.sold = sold;
}


module.exports = router;

ale jeśli zrobię tak:

.query({
	where: {		
		id: times
	},
	andWhere: {
		sold: false
	}
})

dostaje błąd:

Unhandled rejection TypeError: Cannot read property 'get' of null
    at Child.Product.query.fetch.then (C:\Users\Admin\Desktop\expressJSlekcje\routes\index.js:21:62)
    at Child.tryCatcher (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:569:18)
    at Promise._settlePromise0 (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:614:10)
    at Promise._settlePromises (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:694:18)
    at _drainQueueStep (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:138:12)
    at _drainQueue (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:131:9)
    at Async._drainQueues (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:17:14)
    at processImmediate (timers.js:638:19)

Unhandled rejection TypeError: Cannot read property 'get' of null
    at Child.Product.query.fetch.then (C:\Users\Admin\Desktop\expressJSlekcje\routes\index.js:21:62)
    at Child.tryCatcher (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:569:18)
    at Promise._settlePromise0 (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:614:10)
    at Promise._settlePromises (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\promise.js:694:18)
    at _drainQueueStep (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:138:12)
    at _drainQueue (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:131:9)
    at Async._drainQueues (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\Admin\Desktop\expressJSlekcje\node_modules\bluebird\js\release\async.js:17:14)
    at processImmediate (timers.js:638:19)

Czym to może być spowodowane?

Odnośnik do komentarza
https://skript.pl/temat/32588-nodejs-bookshelfjs-problem-z-pobieraniem-danych-z-bazy/
Udostępnij na innych stronach

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...