【发布时间】:2015-08-12 19:07:39
【问题描述】:
对 node.js 来说真的很新,对 PostgreSQL 来说相对较新。由于某种原因,这只会创建第一个表,而不是第二个。我可能完全做错了。我似乎找不到任何足够相似的代码示例来推断答案。我想创建两个表。看来我只能运行一个查询,仅此而已。不再。建议我的连接在第二个可以执行之前结束。我不知道为什么。在十几个不同的 Google 搜索中,我找不到一个这样做的例子。
var client = new pg.Client(connectionString);
client.connect();
var query = client.query('CREATE TABLE preferences(id SERIAL PRIMARY KEY, food VARCHAR(40) not null, preferred BOOLEAN)');
client.query('CREATE TABLE foods(id SERIAL PRIMARY KEY, food VARCHAR(40) not null, type VARCHAR(40) not null, spicy BOOLEAN, spiciness VARCHAR(10)');
query.on('end', function() { client.end(); });
我怀疑我是否可以只执行另一个 client.query 并在最后执行它。我从教程中取出了这个例子,但是我添加了第二个表。所以我只是在玩它,并尝试通过这个测试在这里学习。
只是为了说明我的最终目标:我想最终创建一个完整的脚本来构建完全包含所有必要表和数据的数据库。
无论我尝试什么都会出错:
$ 节点模型/database.js 事件.js:85 投掷者; // 未处理的“错误”事件 ^ 错误:输入末尾的语法错误 在 Connection.parseE (~/Documents/test01/node_modules/pg/lib/connection.js:534:11) 在 Connection.parseMessage (~/Documents/test01/node_modules/pg/lib/connection.js:361:17) 在套接字。 (~/Documents/test01/node_modules/pg/lib/connection.js:105:22) 在 Socket.emit (events.js:107:17) 在 readableAddChunk (_stream_readable.js:163:16) 在 Socket.Readable.push (_stream_readable.js:126:10) 在 TCP.onread (net.js:538:20)
【问题讨论】:
-
您只等待其中一个结束,而不是另一个结束,因此您可能提前结束了连接。
-
从我收集到的内容(那里的教程很糟糕),query.on('end'... 部分结束了与数据库的连接。它得到 throw er; // 未处理的 'error' 事件在回复中。我现在仍然很困惑。
-
query.on(type, handler)为传入的类型添加事件处理程序,在本例中为“end”。当您附加到的查询发生该事件时,处理程序将触发。因此,处理程序会在第一个查询完成时触发,这很可能在第二个查询完成之前。 -
是的,我还是被难住了。
-
@NathanMcKaskle 你从来没有接受过任何答案?
标签: node.js postgresql