Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Coffeescript类方法始终返回false_Javascript_Node.js_Coffeescript - Fatal编程技术网

Javascript Coffeescript类方法始终返回false

Javascript Coffeescript类方法始终返回false,javascript,node.js,coffeescript,Javascript,Node.js,Coffeescript,我处理的是一个简单的Coffescript类,它表示一个数据库模块(使用SQLite和jugglingdb,这很好),它有一个返回总是false的方法,我不明白为什么会这样: 数据库。咖啡 Schema = require('jugglingdb').Schema; module.exports = class Database constructor: (database_file) -> if database_file? @filename = data

我处理的是一个简单的Coffescript类,它表示一个数据库模块(使用SQLite和jugglingdb,这很好),它有一个返回总是false的方法,我不明白为什么会这样:

数据库。咖啡

Schema = require('jugglingdb').Schema;

module.exports = class Database
  constructor: (database_file) ->
    if database_file?
        @filename = database_file
    else
        @filename = 'board.db'

    console.log '[DB] SQLite database: ' + @filename

    @db = null
    @connection = false

  connect: (callback) ->
    @db = new Schema 'sqlite3', { database: @filename } 
    @db.on 'connected', () -> 
        console.log '[DB] Database connection established'
        @connection = true
        callback? callback(@connection)
    @db.on 'disconnected', ()-> 
        console.log '[DB] Database closed' 
        @connection = false
        callback? callback(@connection)
    @db.log = (message, duration)-> console.log '[DB]' + message


  close: ->
    @db.disconnect()
    delete @db
    @db = null

  getSchema: ->
    if @db isnt null
        return @db
    else
        return null

  isConnected: -> 
    return @connection
数据库测试.js

var Database = require('./database');
function db_connection_cb(is_connected)
{
  var connection = db.isConnected();
  console.log("Class method: " + connection + " --- from callback: " + is_connected);
}

var db = new Database('user_test.db'); 
db.connect(db_connection_cb);
令人惊讶的是,db.isConnected()报告始终为false,而is\u connected始终为true。
Node.js为什么会有如此奇怪的行为?

主要问题是您在
@db.on
回调中失去了
这个
上下文。要防止它,您应该使用而不是
->

调用回调函数的方式总是错误的,条件调用的正确语法是
callback@连接

下面是您的代码的外观:

@db.on“已连接”,=>
console.log“[DB]数据库连接已建立”
@连接=真
回拨@连接
@db.on“断开连接”,=>
console.log“[DB]数据库已关闭”
@连接=错误
回拨@连接