كيف يمكنني تقديم قيم الإرجاع لبيان عقدة مسكل مع اليشم?

StackOverflow https://stackoverflow.com//questions/23065966

سؤال

لدي عقدة.شبيبة الخادم مع اكسبرس واليشم تشغيل.بناء على طلب هتب ، سيقوم الخادم بتنفيذ الوظيفة التالية:

function home(req, res) {

  res.render("site/index", {recordset: recordset}); //render the Jade template
}

الآن أود أن تمر في صفيف إلى متغير مجموعة السجلات أعلاه التي يمكنني حلقة من خلال في اليشم لملء القائمة المنسدلة على صفحة هتمل بلدي.لقد استردت المصفوفة المطلوبة مثل ذلك:

function runSQLSelect() {
      sql.connect(config.db, function(err) {
      var request = new sql.Request();
      request.query("select MyColumn FROM MyTable", function(err, recordset) {
        console.log(recordset);
        });
      });
}

ما هي الطريقة الصحيحة لتشغيل الاستعلام سكل بشكل غير متزامن وتمرير النتيجة اللاحقة في قالب اليشم الخاص بي?

هل كانت مفيدة؟

المحلول

تقديم في رد الاتصال من الاستعلام.

function runSQLSelect(callback) {
      sql.connect(config.db, function(err) {
      var request = new sql.Request();
      request.query("select MyColumn FROM MyTable", function(err, recordset) {
        console.log(recordset);
        callback(recordset);
        });
      });
}

function home(req, res) {
  runQSQLSelect( function(result) {
      res.render("site/index", {recordset: result}); //render the Jade template
  });
}

ملاحظة ، قد ترغب في استدعاء رد الاتصال الخاص بك بطريقة غير متزامنة ، باستخدام setImmediate, ، قد تفكر أيضا في استخدام رد الاتصال الخاص بك باستخدام ممارسة العقدة القياسية لقبول معلمتين callback(err,data).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top