Skip to content

Latest commit

 

History

History
33 lines (33 loc) · 1.03 KB

007 Fetching Data from Files Via the Model.md

File metadata and controls

33 lines (33 loc) · 1.03 KB

007 Fetching Data from Files Via the Model

علت اینکه این مشکل پیش میاد اینه که متد ها async هستن برای همین undefiend بر می گردونه. برای رفع این ارور منطقی میایم از call back استفاده می کنیم:

static fetchAll(cb) {
  let p = path.join(
    path.dirname(process.mainModule.filename),
    "data",
    "products.json"
  );
  fs.readFile(p, (err, fileContent) => {
    if (err) {
      cb([]);
    }
    return JSON.parse(fileContent);
  });
  cb(products);
}

بعد میایم اونجایی که از این تابع استفاده کردیم به صورت call back می نویسیم. توی پوشه controller فایل products.js به صورت زیر:

exports.getProducts = (req, res, next) => {
  Product.fetchAll((products) => {
    res.render("shop", {
      prods: products,
      pageTitle: "Shop",
      path: "/",
      hasProducts: products.length > 0,
      activeShop: true,
      productCSS: true,
    });
  });
};