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ć (:().
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)
Pytanie
KrejzolekPRO 600
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