У меня есть служба REST API с экспресс-службой. Один API принимает два параметра:Узел: назначить открытую функцию для свойства объекта в другом файле
- идентификаторов
- типа
API-интерфейс должен разрешить id
в некоторые детали и выполнить последовательную общие задачи для всех типов. Функция для определения идентификатора является другой базой для переменной type
.
Я пытаюсь добиться этого путем создания 1 + n
справочных файлов, где 1
является файл, содержащего поток разрешения идентификатора и все общих задач, и n
относится к файлам, содержащим определенную функцию разрешения для идентификатора базы по типу. Пример кода, как показано ниже.
type1.js
module.exports.resolveId = function(id, callback) {...callback}; module.exports.otherFunctions....
common.js
var type1Lib = require('./type1.js'); var resFunc = {type1:typeLib.resolveId}; function performTasks(id, type, callback) { async.auto( resolve:function(cb) { resFunc[type](id, cb); }, otherFunc:['resolve', function(cb) {cb}] }, callback) }
При выполнении линии resFunc[type](id, cb)
, код падения, потому что resFunc[type]
не определена.
Я попытался объявить функцию первого в type1.js
function resolveId (id, callback) {...callback};
module.exports.resolveId = resolveId;
, но это не помогает.
Я пропустил что-то очень фундаментальное здесь?
Бюлент, спасибо за ответ. Мой тип - это строка, и каждый тип.js содержит более одной функции. Поэтому я не могу действительно делать module.exports = solveId; Плюс, какая разница между модулем.exports и module.exports.resolveId принципиально? Я тоже пытаюсь понять это на теоретическом уровне. – Lee
У вас может быть несколько функций, это повлияет только на то, что вы ставите после последней точки 'require ('./ typeX').'. Если вы выполняете функцию module.exports =, то вы можете иметь только одну функцию экспорта и требовать завершения вызова); –
Оба модуля.export и module.exports.resovleId назначают функцию свойству в природе, не так ли? Если они одинаковы по своей природе, зачем работать, а другой нет? – Lee