无法传递对象以在节点 js/express js 上导出 javascript 模块
Unable to pass an object to exported javascript module on nodejs / expressjs
我无法将对象传递给从另一个模块导出的函数。故事是这样的。
我正在从模块 TagService.js
中导出一个函数
文件:TagService.js
addTag = ({tag}) => {
//some activity
}
module.exports = { addTag, //other functions}
正在调用模块 ServiceHandler.js
中的函数
文件:ServiceHandler.js
const Controller = require('./Controller');
const service = require('../services/TagService');
const addTag = async (request, response) => {
await Controller.handleRequest(request, response, service.addTag);
};
以下是控制器在 Controller.js
中的结构
文件:Controller.js
static async handleRequest(request, response, serviceOperation) {
//some activity
const serviceResponse = await serviceOperation(this.collectRequestParams(request));
//some more activity...
}
static collectRequestParams(request) {
//some activity
return requestParams;
}
现在,在Controller中,requestParams返回成功。但是当调用在TagService进入addTag函数时,对象tag没有被传递!
更多背景知识。这是从 openapi-generator 为 nodejs-express-server 存根生成的代码。
这是标签服务的 openapi.yaml 模板。
/samyojya-tag:
post:
operationId: addTag
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
responses:
"201":
content:
...
schemas:
Tag:
example:
name: name
id: 1
type: type
properties:
id:
type: string
name:
type: string
category:
type: string
type: object
xml:
name: Tag
使用 node 12.16.2 和 express 4.16.1
我想问题是你用 ({...})
解构了对象
在您的情况下,如果您传递的对象没有名为 tag
的 属性,则您只能从传递的对象访问 属性 tag
,它是未定义的.
您应该将此 ({tag})
更改为此 (tag)
以获得您传递的对象的完全访问权限
var obj = {
test: "i work",
tag: "i work too"
}
function test({tag}){
console.log(tag);
}
function test2(tag){
console.log(tag);
}
test(obj)
test2(obj);
我无法将对象传递给从另一个模块导出的函数。故事是这样的。
我正在从模块 TagService.js
中导出一个函数文件:TagService.js
addTag = ({tag}) => {
//some activity
}
module.exports = { addTag, //other functions}
正在调用模块 ServiceHandler.js
中的函数文件:ServiceHandler.js
const Controller = require('./Controller');
const service = require('../services/TagService');
const addTag = async (request, response) => {
await Controller.handleRequest(request, response, service.addTag);
};
以下是控制器在 Controller.js
中的结构文件:Controller.js
static async handleRequest(request, response, serviceOperation) {
//some activity
const serviceResponse = await serviceOperation(this.collectRequestParams(request));
//some more activity...
}
static collectRequestParams(request) {
//some activity
return requestParams;
}
现在,在Controller中,requestParams返回成功。但是当调用在TagService进入addTag函数时,对象tag没有被传递!
更多背景知识。这是从 openapi-generator 为 nodejs-express-server 存根生成的代码。
这是标签服务的 openapi.yaml 模板。
/samyojya-tag:
post:
operationId: addTag
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Tag'
responses:
"201":
content:
...
schemas:
Tag:
example:
name: name
id: 1
type: type
properties:
id:
type: string
name:
type: string
category:
type: string
type: object
xml:
name: Tag
使用 node 12.16.2 和 express 4.16.1
我想问题是你用 ({...})
在您的情况下,如果您传递的对象没有名为 tag
的 属性,则您只能从传递的对象访问 属性 tag
,它是未定义的.
您应该将此 ({tag})
更改为此 (tag)
以获得您传递的对象的完全访问权限
var obj = {
test: "i work",
tag: "i work too"
}
function test({tag}){
console.log(tag);
}
function test2(tag){
console.log(tag);
}
test(obj)
test2(obj);