2016-09-03 4 views
3

データベースとしてpostgresを使用して、knexを使用してクエリを作成しようとしています。私は、コードを実行したときしかし、それは私が私のknexfileにpgを追加しているにもかかわらずknexクエリsqliteモジュールのインストールを依頼し続ける

Error: Cannot find module 'sqlite3'

を求めておきます。

クエリ

var data = { 
    id: leagueId, 
    slug: leagueSlug, 
    createdAt: new Date() 
}; 
var query = knex('league').insert(data).toString(); 
query += ' on duplicate key update ' + knex.raw('createdAt= ?, id = ?',[new Date(), id]); 

knex.raw(query); 

knexfile

module.exports = { 
    development: { 
    client: 'pg', 
    connection: { 
     user: 'test', 
     database: 'test' 
    } 
    }, 
    production: { 
    client: 'pg', 
    connection: process.env.DATABASE_URL 
    } 
}; 

index.js

var express = require('express'); 
var request = require('request'); 
var parse = require('body-parser'); 
var knex = require('knex'); 
var Log = require('log'); 
var router = express.Router(); 
var log = new Log('info'); 



    /* Retrieve and save leagues*/ 
    router.get('/api/league', function(req, res, next) { 

    /* exclude slugs */ 
    var excludedSlugs = [ 'eu-cs', 'na-cs', 'iwc', 'all-star']; 

    request({ 
    method: 'GET', 
    uri: 'http://test', 
    headers: { 
    'Content-Type': 'application/json', 
    'dataType': 'json'} 
}, function (error, response, body){ 
    if(!error && response.statusCode == 200){ 

    var bodyJSON = JSON.parse(body); 
    var leagueObjects = bodyJSON["leagues"]; 

    for(var objIndex in leagueObjects){ 
     if (excludedSlugs.indexOf(leagueObjects[objIndex]["slug"]) > -1) { 
     /* excluded slugs - do nothing */ 

     } else { 
      var leagueId = leagueObjects[objIndex]["id"]; 
      var leagueSlug = leagueObjects[objIndex]["slug"]; 

      var data = { 
       id: leagueId, 
       slug: leagueSlug, 
       name: "lol", 
       createdAt: new Date() 
      }; 
      var query = knex('league').insert(data).toString(); 
      query += ' on duplicate key update ' + 'createdAt= ?, id = ?',[new Date(), leagueId]; 

      knex.raw(query); 


     } 
    } 


    res.json(leagueObjects); 
    } else { 
    log.error(error); 
    } 
}) 
}); 


module.exports = router; 
+1

のようなknexを使用

var db = require('./db'); 

を使用しましたあなたは** knexfile **を読んでいますか? –

+0

@Peter Pikはあなたのプロジェクトのレイアウトを熟知してください。また、クエリビルダー(var knex = // ... part)をインスタンス化する場所です。また、このサンプルプロジェクトのレイアウトを見てください、それは移行によって使用される同じknexfile.jsを使用する方法を示しています:https://github.com/sombriks/blogpost-upload-express-knex/blob/master/index.js – Sombriks

+0

が今すぐレイアウトを追加しました。ここで私は残りのAPIからデータを取得しようとしており、knexを使って私のpostgres dbに追加します –

答えて

2

私は解決策を見つけました。私は私がやったことは別々db.jsを持つファイルを作成することでした正しくknexfileを読んでいませんでした。

var config  = require('../knexfile.js'); 
var env   = 'development'; 
var knex  = require('knex')(config[env]); 

module.exports = knex; 

knex.migrate.latest([config]); 

その後、私はその後、私は

db.knex() 
関連する問題