节点发布 将新记录插入我的数据库不会返回新条目的数据
Node-postgres Inserting a new record into my database does not return the new entry's data
下面是
执行查询的路由:
userRouter.route("/new")
.post(function (req, res) {
var user = req.body;
pg.connect(connectionString, function (error, client, done) {
var queryString = "INSERT INTO Users (id, first_name, last_name) VALUES (" + "'" + [user.id, user.first_name, user.last_name].join("','") + "'" + ")";
console.log(queryString);
client.query(queryString, function (error, result) {
console.log(result.rows);
done();
});
});
});
问题是我尝试从第二个控制台中引用的"结果"值基本上是空白的:
{
command: 'INSERT',
rowCount: 1,
oid: 0,
rows: [],
fields: [],
_parsers: [],
RowCtor: null,
rowAsArray: false,
_getTypeParser: [Function: bound ]
}
result.rows 不应该包含一个数组,其中包含一个表示我刚刚在数据库中创建的行的对象吗?
好吧,我已经想通了。
显然,我试图使用尚未在 Node-Postgres 中实现的功能,如下所述:https://github.com/brianc/node-postgres/wiki/Todo
在查询结果回调中插入/更新/选择行数
虽然这在课程外会非常棒,但有可能 通过将返回 id 甚至返回 * 添加到 查询。这对我来说适用于单列。我将对此进行测试 倍数以及此包对该案例的处理。我很安静 确定在邮政中一定是可能的。
因此,我更新了查询以返回新行的所有数据:
var queryString = "INSERT INTO Users (first_name, last_name) VALUES (" + "'" + [user.first_name, user.last_name].join("','") + "'" + ") RETURNING *";
然后,我修改了查询以考虑"row"事件处理程序,该处理程序在将新行输入数据库时触发。正是在这个事件处理程序的上下文中,我可以访问新的行数据(根据上面的"RETURNING"参数:
var query = client.query(queryString, function (error, result) {
done();
});
query.on("row", function (row, result) {
console.log("Inside the row event handler.");
res.render("users/show", { user: row });
});
啊,它有效!
更新查询并在查询末尾添加" 返回 * "
var queryString = "INSERT INTO Users (id, first_name, last_name) VALUES (" + "'" + [user.id, user.first_name, user.last_name].join("','") + "'" + ") RETURNING *";
获取结果.行[0]
在查询中添加RETURNING fieldName1, fieldName or *
是上述问题的解决方案。
完美工作!
相关文章:
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- Javascript映射对象成员以返回新的扁平对象
- Select2 4.0 - 创建后推送新条目
- 在 es6 中迭代对象并返回新对象
- jQuery没有't返回新的数据属性
- angular.injector在每次调用时返回新的服务实例
- 使用regex返回新的文件名
- Ng管理员自定义参考列表-具有创建新条目的能力
- 使用静态函数返回新Promise
- 如果未使用新运算符,则返回新对象
- 节点,socket.io - 将新条目添加到新闻源时更新客户端
- 节点发布 将新记录插入我的数据库不会返回新条目的数据
- 从使用 $resource 的服务返回新对象
- 如何从数据对象中提取字符并返回新的字符
- ES6 Can'当前Promise完成后,不会返回新的Promise
- 如何在每个新条目中包含日期/时间戳
- 为什么没有将新条目插入数据库
- 是否有可能在运算符内部返回新的可观察项,嵌套可观察项
- Meteor:如何为集合中的每个值只返回一个条目
- TypeError:c在使用DataTable中的new entry Form保存新条目时未定义