1

これは、データベースを管理するために jquery と nedb を操作する、私の node-webkit アプリの JavaScript コードです。

librodb.find({_id: docs[i].libro}, function (err, bookdoc) {
window.titulo = bookdoc[0].titulo;
window.ISBN = bookdoc[0].ISBN;
});

これは、データベースからエントリを読み取り、それらを配列 (bookdoc) に返します。

for (var i = 0; i < docs.length; i++) {
  librodb.find({_id: docs[i].libro}, function (err, bookdoc) {
  window.titulo = bookdoc[0].titulo;
  window.ISBN = bookdoc[0].ISBN;
  });
  switch(docs[i].razon){
    case 1:
      $(".listed").append('<li><i class="fa fa-institution"></i><i class="fa fa-sign-in"></i>El '+docs[i].fecha+' '+docs[i].cantidad+' Libros ("'+window.titulo+'", ISBN: '+window.ISBN+') producidos.</li>');
      break;
      case 2:
        libreriadb.find({_id: docs[i].libreria}, function (err, librarydoc) {
          window.nombre = librarydoc[0].nombre;
        });
        $(".listed").append('<li><i class="fa fa-institution"></i><i class="fa fa-sign-in"></i>El '+docs[i].fecha+' '+docs[i].cantidad+' Libros ("'+window.titulo+'", ISBN: '+window.ISBN+') devueltos por Libreria ("'+window.nombre+'"), recibo '+docs[i].documento+'.</li>');
      break;
      case 3:
        $(".listed").append('<li><i class="fa fa-question"></i><i class="fa fa-sign-in"></i>El '+docs[i].fecha+' '+docs[i].cantidad+' Libros ("'+window.titulo+'", ISBN: '+window.ISBN+') en stock ingresaron por "'+docs[i].descripcion+'".</li>');
      break;
    }
}

問題は、変数 window.titulo と window.ISBN が読み取りデータベース関数の内部で定義されているが、外部には定義されていないことです。

私が使用する場合

window.変数名=

de librodb.find 関数の後に変数を呼び出すと、両方とも「未定義」が返されます。

私が使用する場合

var 変数名=

また

変数名=

実行は次のエラーで停止します:「ReferenceError:タイトルが定義されていません」(スイッチから呼び出そうとした場所)。

3 つのケースすべてで、librodb.find 関数内のアラートは、返されるはずの値を返します。

変数を定義または呼び出すにはどうすればよいですか?

4

2 に答える 2