Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 函数返回一个承诺,但我需要数据库项。。。?_Node.js_Sqlite_Promise - Fatal编程技术网

Node.js 函数返回一个承诺,但我需要数据库项。。。?

Node.js 函数返回一个承诺,但我需要数据库项。。。?,node.js,sqlite,promise,Node.js,Sqlite,Promise,我是NodeJS的新手,我正试图通过构建一个购物车web应用程序来学习它。我将数据存储在SQLite数据库中,但似乎无法访问它。.all()方法返回一个Promise对象,我不知道如何获取数据库中的项 我遵循本教程:构建一个数据访问对象和两个模型:ItemRepository和CartRepository 这是我的数据访问对象脚本中的get方法: get(sql, params = []) { return new Promise((resolve, reject) => {

我是NodeJS的新手,我正试图通过构建一个购物车web应用程序来学习它。我将数据存储在SQLite数据库中,但似乎无法访问它。.all()方法返回一个Promise对象,我不知道如何获取数据库中的项

我遵循本教程:构建一个数据访问对象和两个模型:ItemRepository和CartRepository

这是我的数据访问对象脚本中的get方法:

get(sql, params = []) {
    return new Promise((resolve, reject) => {   
      this.db.get(sql, params, (err, result) => {
        if (err) {
          console.log('Error running sql: ' + sql)
          console.log(err)
          reject(err)
        } else {
          resolve(result)
        }
      }) 
  }
这是我的index.js

router.get('/', function(req, res, next) {
    var dao = new AppDAO('./database.sqlite3');
  var itemRepo = new ItemRepository(dao);
  var cartRepo = new CartRepository(dao);
  items = itemRepo.getAll();
  console.log(items);
  var itemRows = [];
  var rowSize = 3;
  for (var i = 0; i < items.length; i += rowSize){
    itemRows.push(items.slice(i, i+rowSize));
  }
  res.render('shop/index', { title: 'sHOP', items: itemRows })

});
router.get('/',函数(req,res,next){
var dao=new-AppDAO('./database.sqlite3');
var itemRepo=新的ItemRepository(dao);
var cartRepo=新的CartRepository(dao);
items=itemRepo.getAll();
控制台日志(项目);
var itemRows=[];
var rowSize=3;
对于(变量i=0;i

对于如何获取表的内容而不是Promise对象,我有点不知所措。

我建议您阅读promises和async/await或bluebird promises。您需要在
promise
上使用
then
方法来获得如下实际结果

router.get('/', function(req, res, next) {
var dao = new AppDAO('./database.sqlite3');
var itemRepo = new ItemRepository(dao);
var cartRepo = new CartRepository(dao);
itemRepo.getAll().then(( items) =>{ 
   console.log(items);
   var itemRows = [];
   var rowSize = 3;
   for (var i = 0; i < items.length; i += rowSize){
    itemRows.push(items.slice(i, i+rowSize));
     }
    res.render('shop/index', { title: 'sHOP', items: itemRows })
   })
});
router.get('/',函数(req,res,next){
var dao=new-AppDAO('./database.sqlite3');
var itemRepo=新的ItemRepository(dao);
var cartRepo=新的CartRepository(dao);
itemRepo.getAll().then((items)=>{
控制台日志(项目);
var itemRows=[];
var rowSize=3;
对于(变量i=0;i
呼叫可能重复
。然后
承诺使用它