Mọi người cho hỏi lỗi hàm get chưa được định nghĩa



  • Mình có sử dụng monk để connect tới db, làm y hệt tút mà nó báo lỗi hàm get ở dòng : const posts = db.get('posts'); undifine, ngồi cả buổi chiều không tìm ra lỗi nhườ mọi người giúp với. Không biết up code lên diễn đàn như nào mọi người thông cảm :(
    [code=node.js]var express = require('express');
    var router = express.Router();
    var mongo = require('mongodb');
    const db = require('monk')('localhost/nodeblog');

    /* GET home page. */
    router.get('/', function (req, res, next) {
    const db = req.db;
    const posts = db.get('posts');
    posts.find({}, {}, function (err, posts) {
    res.render('index', {
    "posts": posts
    });
    });
    console.log(db);});
    module.exports = router;
    [/code]



  • Mình thấy bạn đã lấy đối tượng db tại dòng: const db = require('monk')('localhost/nodeblog');

    Tại sao: bạn còn gán lại khai báo lại db bên trong router.get(.., function () {...}), tại dòng
    const db = req.db;

    Mình nghĩ bạn bỏ dòng: const db = req.db;
    Dùng biến db đã định nghĩa trước đó.

    Một điểm lưu ý nữa là bạn nên định nghĩa db như là singleton và dùng chung cho tất cả các module khác.

    tuanquynet

    0


  • @tuanquynet mình đã thử xóa đi mà nó vẫn báo lỗi:
    TypeError: Cannot read property 'get' of undefined
    at /home/duynguyenduc/Desktop/nodeblog/routes/index.js:9:21
    at Layer.handle [as handle_request] (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/layer.js:95:5)
    at /home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:335:12)
    at next (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:275:10)
    at Function.handle (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:174:3)
    at router (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:47:12)
    at Layer.handle [as handle_request] (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:317:13)
    at /home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:335:12)
    at next (/home/duynguyenduc/Desktop/nodeblog/node_modules/express/lib/router/index.js:275:10)
    Nhân tiện chỉ mình cách up code lên diễn đàn với
    at multerMiddleware (/home/duynguyenduc/Desktop/nodeblog/node_modules/multer/lib/make-middleware.js:18:41)



  • db.get chưa tồn tại thời điểm code chạy do khả năng Monk mới trả về promise mà bạn đã pass vào req.db ...


Log in to reply