1
var e = require("./myApp.js");
var myServer = e.CreateServer(1337);
myServer.Register("/", "GET", function (req, res) { res.end("J") });
myServer.Register("/", "GET", function (req, res) { res.end("Ja") });
myServer.Start();
这是我的 “包装”:比较2个属性 “一些”
module.exports = (function() {
function _createServer(port) {
var routingTable = [];
var port = port;
var server = require('http').createServer();
function _start() {
server.listen(port);
console.log("Server was started");
};
function RegisterRecord(url, method, fnc) {
this.url = url;
this.method = method;
this.fnc = fnc;
};
function _register(newUrl, newMethod, newFnc) {
if (_checkInput(newUrl, newMethod))
console.log("Register failed! Record with same URL and Method already exist");
else {
routingTable.push(new RegisterRecord(newUrl, newMethod, newFnc));
console.log("Register success!");
}
};
function _checkInput(newUrl, newMethod) {
return routingTable.some(function fnc(record) { record.url == newUrl && record.method == newMethod });
};
return {
Start: _start,
Register: _register,
ShutDown: _shutDown
};
};
return { CreateServer: _createServer };
})();
所以最重要的功能是 “_register” 和 “checkInput”。
我的目标是只有在数组路由表中允许相同的URL和方法。所以当我执行程序时,Command Promp会打印两次注册成功。但是“/”和“GET”应该只允许一次。
如何比较URL和方法以使它们可以是唯一的?
PS:在 “包装” 是在JS文件 “./MyApp.js”
谢谢!但有可能与“一些”使用它?或者为什么它不适用于“某些”? – igodie
@igodie是的,当然,我很抱歉。我改变了答案。 –