2016-12-04 1 views
0

할 일 목록을 만들어야하고 첫 번째 버전이 제대로 작동합니다 (데이터베이스 연결없이).node.js sqlite 데이터베이스 연결 (frontend angular.js)

index.html을

<div id="todoCard" ng-repeat="task in taskList"> 
       <div id="label"> 
        <label id="description" class="description" ng-class="{strike: task.done}"> 
         <input type="checkbox" ng-model="task.done"/> 
         {{task.description}} 

         <table id="buttons"> 
          <tr> 
           <td> 
            <button id="edit" ng-click="editTodo()">Edit</button> 
           </td> 
           <td> 
            <button id="del" ng-click="deleteTodo($index)">Del</button> 
           </td> 
          </tr> 
         </table> 
       </div> 
      </div> 

controller.js

'use strict'; 
angular.module('toDoApp.controller',[]) 
.controller('toDoController',["$scope", function($scope){ 


    $scope.newTask = ""; 
    $scope.taskList = [ 
     {description: "Buy airplane tickets", done:false}, 
     {description: "Make hotel reservation", done:false}, 
     {description: "Lorem Ipsum", done:true} 
    ]; 

    $scope.addTodo = function() { 
     $scope.taskList.push({description: $scope.newTask, done:false}); 
     $scope.newTask = ""; 
    } 

    $scope.deleteTodo = function(index) { 
     $scope.taskList.splice(index, 1); 

    } 

}]); 

그러나 그 후 나는 SQLite는 데이터베이스에 연결하고 데이터베이스에서 카드를 보여주고 싶었다. 여기

연결이다

가 factory.js

'use strict'; 
angular 
    .module('toDoApp') 
    .factory('toDoAppFactory', function(){ 
     var sqlite3  = require('sqlite3').verbose(); 
     var fs   = require('fs'); 

     // Setup database: 
     var dbFile = 'database.db'; 
     var dbExists = fs.existsSync(dbFile); 

     // If the database doesn't exist, create a new file: 
     if(!dbExists) 
     { 
      fs.openSync(dbFile, 'w'); 
     } 

     // Initialize the database: 
     var db = new sqlite3.Database(dbFile); 

     // Optional installation for newly created databases: 
     if(!dbExists) 
     { 
      db.run('CREATE TABLE `todocards` (' + 
      '`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,' + 
      '`created` TEXT NOT NULL,' + 
      '`deadline` TEXT NOT NULL,' + 
      '`done` INTEGER NOT NULL,' + 
      '`description` TEXT NOT NULL)'); 
     } 

     // Insert some data using a statement: 
     var statement = db.prepare('INSERT INTO `todocards` (`created`, `deadline`, `done`, `description`) ' + 
     'VALUES (?, ?, ?, ?)'); 
     statement.run('2016-05-09', '2016-05-12', Math.round(Math.random() * 1), 'Ipsum'); 
     statement.finalize(); 

     db.each("SELECT * FROM `todocards`", function (err, row) { 
      var taskList = JSON.stringify(row); 

      }); 

     function getCards(taskList) { 
       return taskList; 
      } 
      return { 
      getCards: getCards 
      } 
db.close(); 


    }); 

controllers.js 는 수정되었습니다 :

factory.js 는 I를 index.html을 위해 포함 된

'use strict'; 
angular.module('toDoApp.controller',[]) 
.controller('toDoController',["$scope", function($scope, toDoAppFactory){ 


    $scope.newTask = {}; 
    $scope.taskList = toDoAppFactory.getCards(); 





}]); 
console.log로 factory.js를 테스트했는데 var taskList = JSON.stringify(row);에 배열이 있습니다. 그러나 뭔가 잘못되었습니다.

이 문제에 대한 도움을주십시오. 난 당신이 테이블 준비 데이터가 있다고 가정하겠습니다

답변

0

.. 그래서이 변형 디버깅 factory.js

var taskList = [];// create and array outside to store your rows 
//.each iterates over each row. so push them in array array 
db.each("SELECT * FROM `todocards`", function (err, row) { 
    taskList.push(JSON.stringify(row)); 
}); 

function getCards() { //dont pass in any parameters here 
    console.log(taskList); //just a small check.. 
    return taskList; 
} 
+0

에서

: – GEZ

+0

이 변형 디버깅 : 행이 테이블에 밀어되지만, console.log (taskList)는 아무것도 보여주지 않습니다 ... – GEZ