首页 > 解决方案 > 如何将模型结果传递给节点 js 中的视图

问题描述

我是 node.js 的新手,尝试制作一些小应用程序。一切都很好,但我无法在函数之外传递模型数据:

工作代码是:

usermodel = require('../models/usermodel.js');
exports.index = function(req, res) {
var stuff_i_want = '';
 usermodel.userlist(req, function(result)
 {
    //stuff_i_want = result;
    res.render('index.ejs', {
                title: "Welcome to Socka | View Players",
                players:result
            });
    //rest of your code goes in here
 });
   console.log(stuff_i_want);


};

但我想要一些类似的东西:

usermodel = require('../models/usermodel.js');
exports.index = function(req, res) {
var stuff_i_want = '';
 usermodel.userlist(req, function(result)
 {
    stuff_i_want = result;

    //rest of your code goes in here
 });
   console.log(stuff_i_want);
    res.render('index.ejs', {
                title: "SA",
                players:result
            });


};

标签: node.jsexpress

解决方案


您正在调用一个异步函数userlist,这就是您在回调中需要它的原因。您可以使用诸如bluebirdjs之类的 Promise 库,并将您的用户模型实现重构为标准 nodejs 函数参数(err, result)。在这种情况下,您可以像下面这样重构它

const usermodel  = require('../models/usermodel.js');
exports.index = async function(req, res) {
 const players = await new Promise((resolve, reject) => {
   usermodel.userlist(req, function(result){
     resolve(result)
   });
 })
 res.render('index.ejs', {
   title: "SA",
   players
 });


};

推荐阅读