通过 knex 插入假数据
Insert fake data via knex
我正在尝试使用 faker 通过 knex 将数据插入我的 postgresql 数据库。
请参阅下面的最小示例:
//Loading from an external file
var knex = require('knex')({
client: 'postgresql',
connection: {
database: 'knexdb',
user: 'root',
password: 'root'
},
debug: false,
})
// using faker
const faker = require('faker')
async function main() {
//test connection
await knex.raw('select 1+1 as result').then(function () {
console.log("valid db connection")
// there is a valid connection in the pool
});
//delete data
await knex('posts').del().then(function () {
const res = knex('posts')
if (res) {
console.log("Table content deleted")
} else {
console.log(res)
}
})
const dataAmount = 3
console.log("lets insert " + dataAmount + " rows of data")
for (var index = 0; index < dataAmount; index++) {
try {
await knex('posts').insert({
title: faker.random.word,
description: faker.lorem.paragraph,
deleted: faker.random.boolean,
createdAt: faker.date.recent,
updatedAt: faker.date.recent
})
} catch (e) {
console.log(e)
}
}
// select all
res = await knex('posts')
console.log('All: ', res)
}
main() //.then().catch(err => console.error(err))
我收到以下错误 SELECT * with no tables specified is not valid
。请参阅下面的完整输出:
valid db connection
Table content deleted
insert 3 rows of data
{ error: SELECT * with no tables specified is not valid
at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11)
at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19)
at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at Socket.Readable.push (_stream_readable.js:211:10)
at TCP.onread (net.js:585:20)
name: 'error',
length: 117,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '99',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_target.c',
line: '1211',
routine: 'ExpandAllTables' }
{ error: SELECT * with no tables specified is not valid
at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11)
at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19)
at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at Socket.Readable.push (_stream_readable.js:211:10)
at TCP.onread (net.js:585:20)
name: 'error',
length: 117,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '99',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_target.c',
line: '1211',
routine: 'ExpandAllTables' }
{ error: SELECT * with no tables specified is not valid
at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11)
at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19)
at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at Socket.Readable.push (_stream_readable.js:211:10)
at TCP.onread (net.js:585:20)
name: 'error',
length: 117,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '99',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_target.c',
line: '1211',
routine: 'ExpandAllTables' }
All: []
^C
C:\Users\user\Desktop\Coding Projects\learning_knex\src>node t3-faker.js
valid db connection
Table content deleted
lets insert 3 rows of data
{ error: SELECT * with no tables specified is not valid
at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11)
at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19)
at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at Socket.Readable.push (_stream_readable.js:211:10)
at TCP.onread (net.js:585:20)
name: 'error',
length: 117,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '99',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_target.c',
line: '1211',
routine: 'ExpandAllTables' }
{ error: SELECT * with no tables specified is not valid
at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11)
at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19)
at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at Socket.Readable.push (_stream_readable.js:211:10)
at TCP.onread (net.js:585:20)
name: 'error',
length: 117,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '99',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_target.c',
line: '1211',
routine: 'ExpandAllTables' }
{ error: SELECT * with no tables specified is not valid
at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11)
at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19)
at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at addChunk (_stream_readable.js:266:12)
at readableAddChunk (_stream_readable.js:253:11)
at Socket.Readable.push (_stream_readable.js:211:10)
at TCP.onread (net.js:585:20)
name: 'error',
length: 117,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '99',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'parse_target.c',
line: '1211',
routine: 'ExpandAllTables' }
All: []
对我做错了什么有什么建议吗?
您将 promises 和 async / await 混合在一起,这使得代码更难阅读,并且您在那里也犯了一些错误,也许这就是您想要做的:
//Loading from an external file
var knex = require('knex')({
client: 'postgresql',
connection: {
database: 'knexdb',
user: 'root',
password: 'root'
},
debug: false,
})
// using faker
const faker = require('faker')
async function main() {
//test connection
await knex.raw('select 1+1 as result');
console.log("valid db connection");
//delete data
await knex('posts').del();
const res = await knex('posts'); // FIXED: this was missing await
if (res.length === 0) { // FIXED: also empty array is truthy
console.log("Table content deleted");
} else {
console.log(res);
}
const dataAmount = 3
console.log(`lets insert ${dataAmount} rows of data`);
for (let index = 0; index < dataAmount; index++) {
try {
// FIXED: faker calls were missing () from the end
await knex('posts').insert({
title: faker.random.word(),
description: faker.lorem.paragraph(),
deleted: faker.random.boolean(),
createdAt: faker.date.recent(),
updatedAt: faker.date.recent()
});
} catch (e) {
console.log(e);
}
}
// select all
let finalRes = await knex('posts');
console.log('All: ', finelRes);
}
main().then().catch(err => console.error(err));
我想 SELECT *
没有 table 错误是由于某种原因造成的,因为您试图将函数而不是值写入数据库。
您传递函数而不是它们的 return 值。
await knex('posts').insert({
title: faker.random.word,
description: faker.lorem.paragraph,
deleted: faker.random.boolean,
createdAt: faker.date.recent,
updatedAt: faker.date.recent
})
下面的代码片段应该会为您提供所需的行为:
await knex('posts').insert({
title: faker.random.word(),
description: faker.lorem.paragraph(),
deleted: faker.random.boolean(),
createdAt: faker.date.recent(),
updatedAt: faker.date.recent()
})
我正在尝试使用 faker 通过 knex 将数据插入我的 postgresql 数据库。
请参阅下面的最小示例:
//Loading from an external file
var knex = require('knex')({
client: 'postgresql',
connection: {
database: 'knexdb',
user: 'root',
password: 'root'
},
debug: false,
})
// using faker
const faker = require('faker')
async function main() {
//test connection
await knex.raw('select 1+1 as result').then(function () {
console.log("valid db connection")
// there is a valid connection in the pool
});
//delete data
await knex('posts').del().then(function () {
const res = knex('posts')
if (res) {
console.log("Table content deleted")
} else {
console.log(res)
}
})
const dataAmount = 3
console.log("lets insert " + dataAmount + " rows of data")
for (var index = 0; index < dataAmount; index++) {
try {
await knex('posts').insert({
title: faker.random.word,
description: faker.lorem.paragraph,
deleted: faker.random.boolean,
createdAt: faker.date.recent,
updatedAt: faker.date.recent
})
} catch (e) {
console.log(e)
}
}
// select all
res = await knex('posts')
console.log('All: ', res)
}
main() //.then().catch(err => console.error(err))
我收到以下错误 SELECT * with no tables specified is not valid
。请参阅下面的完整输出:
valid db connection Table content deleted insert 3 rows of data { error: SELECT * with no tables specified is not valid at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11) at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19) at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:585:20) name: 'error', length: 117, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '99', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_target.c', line: '1211', routine: 'ExpandAllTables' } { error: SELECT * with no tables specified is not valid at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11) at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19) at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:585:20) name: 'error', length: 117, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '99', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_target.c', line: '1211', routine: 'ExpandAllTables' } { error: SELECT * with no tables specified is not valid at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11) at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19) at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:585:20) name: 'error', length: 117, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '99', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_target.c', line: '1211', routine: 'ExpandAllTables' } All: [] ^C C:\Users\user\Desktop\Coding Projects\learning_knex\src>node t3-faker.js valid db connection Table content deleted lets insert 3 rows of data { error: SELECT * with no tables specified is not valid at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11) at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19) at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:585:20) name: 'error', length: 117, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '99', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_target.c', line: '1211', routine: 'ExpandAllTables' } { error: SELECT * with no tables specified is not valid at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11) at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19) at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:585:20) name: 'error', length: 117, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '99', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_target.c', line: '1211', routine: 'ExpandAllTables' } { error: SELECT * with no tables specified is not valid at Connection.parseE (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:546:11) at Connection.parseMessage (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:371:19) at Socket. (C:\Users\user\Desktop\Coding Projects\learning_knex\node_modules\pg\lib\connection.js:114:22) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:585:20) name: 'error', length: 117, severity: 'ERROR', code: '42601', detail: undefined, hint: undefined, position: '99', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_target.c', line: '1211', routine: 'ExpandAllTables' } All: []
对我做错了什么有什么建议吗?
您将 promises 和 async / await 混合在一起,这使得代码更难阅读,并且您在那里也犯了一些错误,也许这就是您想要做的:
//Loading from an external file
var knex = require('knex')({
client: 'postgresql',
connection: {
database: 'knexdb',
user: 'root',
password: 'root'
},
debug: false,
})
// using faker
const faker = require('faker')
async function main() {
//test connection
await knex.raw('select 1+1 as result');
console.log("valid db connection");
//delete data
await knex('posts').del();
const res = await knex('posts'); // FIXED: this was missing await
if (res.length === 0) { // FIXED: also empty array is truthy
console.log("Table content deleted");
} else {
console.log(res);
}
const dataAmount = 3
console.log(`lets insert ${dataAmount} rows of data`);
for (let index = 0; index < dataAmount; index++) {
try {
// FIXED: faker calls were missing () from the end
await knex('posts').insert({
title: faker.random.word(),
description: faker.lorem.paragraph(),
deleted: faker.random.boolean(),
createdAt: faker.date.recent(),
updatedAt: faker.date.recent()
});
} catch (e) {
console.log(e);
}
}
// select all
let finalRes = await knex('posts');
console.log('All: ', finelRes);
}
main().then().catch(err => console.error(err));
我想 SELECT *
没有 table 错误是由于某种原因造成的,因为您试图将函数而不是值写入数据库。
您传递函数而不是它们的 return 值。
await knex('posts').insert({
title: faker.random.word,
description: faker.lorem.paragraph,
deleted: faker.random.boolean,
createdAt: faker.date.recent,
updatedAt: faker.date.recent
})
下面的代码片段应该会为您提供所需的行为:
await knex('posts').insert({
title: faker.random.word(),
description: faker.lorem.paragraph(),
deleted: faker.random.boolean(),
createdAt: faker.date.recent(),
updatedAt: faker.date.recent()
})