繁体   English   中英

(node.js) 我如何调用这个中间件 function

[英](node.js) How do I call upon this middleware function

https://repl.it/join/vwrhgruw-davidnguyen32

I'm completely new to Node.js and am trying to call upon a function, but keep receiving an error that I got an Object and not a middleware function. 抱歉,我是 Stackoverflow 的新手,不熟悉发布的所有要求。

const express = require('express')
const fs = require("fs");
const handlebars = require('handlebars');
const router = express.Router()

router.post('/', (request, response) => {
    let result = "";
    if  (request.query.inches) {
        result = processLength(inches);
    }
    else {
        result = "Unexpected submit value: " + submit;
    }
    response.send(result);
});

function processLength() {
    let result = "";
    if (request.query.inches) {
        let inches = request.query.inches;
        let f = inches / 12;
        let feet = f.toFixed(2);
        let y = inches / 36;
        let yards = y.toFixed(2);
        result = inches + " inches is " +
            feet + " feet or " + yards + " yards";
    }
    result = template(data);
    return result
}

我想提交我的模板页面,但无法提交。

processLength()不是中间件。 它只是您尝试从请求处理程序调用的 function 。 它是一个独立的 function 因此它对任何requestresponse变量一无所知,因为您没有将其中任何一个 arguments 传递给它。 If you want it to know about the request object inside that function, then you can pass that object to the function as an argument like this:

const express = require('express')
const fs = require("fs");
const handlebars = require('handlebars');
const router = express.Router()

router.post('/', (request, response) => {
    let result = "";
    if  (request.query.inches) {
        result = processLength(request);
    }
    else {
        result = "Unexpected submit value: " + submit;
    }
    response.send(result);
});

function processLength(req) {
    let result = "";
    if (req.query.inches) {
        let inches = req.query.inches;
        let f = inches / 12;
        let feet = f.toFixed(2);
        let y = inches / 36;
        let yards = y.toFixed(2);
        result = inches + " inches is " +
            feet + " feet or " + yards + " yards";
    }
    // problem here - it's not clear what `data` is?
    result = template(data);
    return result
}

这解决了使请求 object 在processLength function 内可用的问题。 但是,您在 function 内部调用了template(data) ,并且似乎没有定义任何data变量,因此您还必须修复它。

这行代码:

 result = "Unexpected submit value: " + submit;

也有一个问题,因为submit没有在任何地方定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM