knex 查询不断要求安装 sqlite 模块
knex query keep asking for sqlite module install
我正在尝试使用 knex 创建查询,方法是使用 postgres 作为数据库。但是,当我 运行 代码时,它一直在询问
Error: Cannot find module 'sqlite3'
尽管我已将 pg
添加到我的 knexfile。
查询
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;
我找到了解决办法。我没有正确阅读 knexfile 我所做的是创建一个单独的 db.js 文件:
var config = require('../knexfile.js');
var env = 'development';
var knex = require('knex')(config[env]);
module.exports = knex;
knex.migrate.latest([config]);
然后我用了
var db = require('./db');
然后我用 knex 喜欢
db.knex()
可能是knex版本问题,我在knexfile.js客户端[=10=中使用了postgesql而不是pg ]
我正在尝试使用 knex 创建查询,方法是使用 postgres 作为数据库。但是,当我 运行 代码时,它一直在询问
Error: Cannot find module 'sqlite3'
尽管我已将 pg
添加到我的 knexfile。
查询
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;
我找到了解决办法。我没有正确阅读 knexfile 我所做的是创建一个单独的 db.js 文件:
var config = require('../knexfile.js');
var env = 'development';
var knex = require('knex')(config[env]);
module.exports = knex;
knex.migrate.latest([config]);
然后我用了
var db = require('./db');
然后我用 knex 喜欢
db.knex()
可能是knex版本问题,我在knexfile.js客户端[=10=中使用了postgesql而不是pg ]