Nodejs如何作用域父对象到mysql查询匿名回调
nodejs how to scope parent object to mysql query anonymous callback
我是node.js的新手,还没有完全进入匿名函数的作用域。我用几个方法声明了一个对象。在我的方法中,我首先从mysql池中获得mysql连接,然后对连接进行查询。现在我想调用对象的一个方法。在阅读了作用域和绑定之后,我得到了下面的代码:
我想知道以下是坏的做法还是好的,如果有更好的模式来实现这一点?
function myclass() {}
myclass.prototype.dosomthing = function () {}
myclass.prototype.init = function() {
pool.getConnection(function(err,connection)){
this.dosomthing();
connection.query("sql_statement", function(err,rows){
this.dosomething();
}.bind(this));
}.bind(this));
}
谢谢,我真的很欣赏你的专业知识!
您所拥有的是好的,尽管它确实涉及创建不必要的函数对象(bind
创建并返回一个新函数)。
作为另一种选择,只需使用您关闭的变量:
function myclass() {}
myclass.prototype.dosomthing = function () {}
myclass.prototype.init = function() {
var self = this; // Remember `this`
pool.getConnection(function(err,connection)){
self.dosomthing(); // Use it
connection.query("sql_statement", function(err,rows){
self.dosomething(); // Use it
});
});
};
我在上面使用了self
,但通常我根据对象的实际名称来选择名称。例如,如果myclass
是Foo
,我可能会使用thisFoo
或类似的名称。
旁注:JavaScript中压倒性的约定是,作为构造函数使用的函数以大写字母开头命名。所以MyClass
而不是myclass
相关文章:
- 在node.js-mysql中执行UPDATE查询不起作用
- 更新从Mysql查询检索到的数据?Node.js节点mysql
- 浓缩一系列mySQL查询
- 如何翻译MySQL查询's ResultSet转换为整数
- 如何在mysql查询(NODE.js)中重复使用一个参数
- onclick->mysql查询->javascript;同一页
- 向更新mysql查询传递一个id
- 如何在下拉列表更改时自动填充mysql查询结果中的文本框值
- mysql查询一次在单个查询中的多个表中插入记录
- 添加行并运行多个mySQL查询
- 如何将mysql查询的结果获取到html文本框中
- 数组数据排序类似mysql查询
- 使用jquery显示mysql查询结果
- PHP MySQL 在一个页面和一个查询中插入具有多行的数据
- 在“onexit”或“onsubmit”之后,查询mysql并填充表单字段,而无需离开页面php js
- 使用下拉列表中的值查询 MySQL 数据库,然后使用结果填充文本字段而不刷新页面
- 通过JavaScript中的PHP查询MySQL,时间间隔
- Highcharts标签格式化器查询mysql
- 限制PHP查询mysql数据库的非空行
- 使用Node.JS查询MySQL,并在网页中显示结果