在我们的索引文件中,在文件的顶部,我们通常会<cfparam>输出来自URL,表单或任何地方的变量.但是,我们收到了很多机器人,比如www.example.com/survey/index.cfm?nPageNumber=-1,这意味着像这样的cfparam:
<cfparam name="request.parameters.nPageNumber" default="1" type="numeric" />
Run Code Online (Sandbox Code Playgroud)
由于机器人放入查询字符串的无意义而导致失败.
我发现自己越来越不得不像这样编写我的cfparams:
<cfif structKeyExists(request.parameters,"nPageNumber") AND isNumeric(request.parameters.nPageNumber)>
<cfparam name="request.parameters.nPageNumber" default="1" type="numeric" />
<cfelse>
<cfset request.parameters.nPageNumber = 1>
</cfif>
Run Code Online (Sandbox Code Playgroud)
虽然这解决了这个问题,但我不禁觉得这个解决方案并不是最好/最有效的.我使用cfparam得当还是有更好的方法可以做到这一点?
好的,我们试图通过使用包含已定义字段的数据库表来变得聪明:
(1) id, name, title, datemodified, dateadded
Run Code Online (Sandbox Code Playgroud)
然后将它们扩展为各种"对象"
联系表
(2) id, name, title, datemodified, dateadded, sitecode, contactid
要么:
条款表
(3) id, name, title, datemodified, dateadded, sitecode, articleid, votes
所以你会注意到(1)成为基础,(2)和(3)扩展.
我们有一个基础对象,在这些基本字段上进行数据库查询,然后我们尝试使用以下代码神奇地扩展它:
<cfquery name="local.qReturnQuery" datasource="#variables.sDSN#">
SELECT id, name, title, datemodified, dateadded, sitecode, contactid
FROM tbl_#arguments.sPrefix# cb
WHERE 1
<cfif arrayLen(arguments.aExtendedParams) gt 0>
<cfloop from="1" to="#arrayLen(arguments.aExtendedParams)#" index="local.x">
<cfscript>
local.sParamField = arguments.aExtendedParams[local.x][1];
local.sParamValue = arguments.aExtendedParams[local.x][2];
local.sParamType = arguments.aExtendedParams[local.x][3];
local.bParamIsList = arguments.aExtendedParams[local.x][4];
local.sParamCondition = arguments.aExtendedParams[local.x][5];
local.bIsPositive = arguments.aExtendedParams[local.x][6];
</cfscript>
<cfswitch expression="#local.sParamType#">
<cfcase value="integer,boolean" delimiters="true">
#local.sParamCondition# …Run Code Online (Sandbox Code Playgroud) 我希望能够正确测试我的ES6类,它的构造函数需要另一个类,所有这些看起来像这样:
A级
class A {
constructor(b) {
this.b = b;
}
doSomething(id) {
return new Promise( (resolve, reject) => {
this.b.doOther()
.then( () => {
// various things that will resolve or reject
});
});
}
}
module.exports = A;
Run Code Online (Sandbox Code Playgroud)
B级
class B {
constructor() {}
doOther() {
return new Promise( (resolve, reject) => {
// various things that will resolve or reject
});
}
module.exports = new B();
Run Code Online (Sandbox Code Playgroud)
指数
const A = require('A');
const b = require('b');
const a …Run Code Online (Sandbox Code Playgroud) 我正在尝试从已传递到引用另一个对象的对象的字符串构建方法调用.
通常在调用对象时,我们编写如下代码:
application.stObj.oNewsBusiness.getNews(argumentCollection=local.stArgs);
Run Code Online (Sandbox Code Playgroud)
但是,我所做的是创建一个包含对象名称,方法名称和参数集合的数组.
<cfscript>
local.stArgs = {};
local.stArgs.nNewsID = 19;
local.stArgs.sAuthor = "John";
local.aData = [];
local.aData[1] = local.stArgs;
local.aData[2] = "stObj.oNewsBusiness";
local.aData[3] = "getNews";
</cfscript>
Run Code Online (Sandbox Code Playgroud)
但是我正在努力将所有这些重新组合成一个方法调用.
更新使用建议但仍有问题
虽然cfinvoke似乎适用于:
<cfinvoke component="#application.stObj.oNewsBusiness#" method="#local.sMethod#" argumentcollection="#local.stArgs#" returnvariable="local.qData"></cfinvoke>
Run Code Online (Sandbox Code Playgroud)
做以下事情时它不起作用:
<cfscript>
local.stArgs = local.aData[1];
local.sObject = local.aData[2];
local.sMethod = local.aData[3];
</cfscript>
<cfinvoke component="application.#local.sObject#" method="#local.sMethod#" argumentCollection="#local.stArgs#" returnvariable="local.qData"></cfinvoke>
Run Code Online (Sandbox Code Playgroud)
它会产生一个错误:
找不到ColdFusion组件或接口application.stObj.oNewsBusiness
我发现该valuelist()函数不喜欢动态命名的查询:
<cfscript>
variables.nNumber = 1;
request.qDirectories = new query();
request.qDirectories.setDBType('query');
request.qDirectories.setAttributes(qDirectories=request.qAllDirectories);
request.qDirectories.setSQL("SELECT id, name, abbr, multiproperties, isPublished,
isArchived, dateAdded, lastModified, lastModifiedBy,
prefix, lstJournalCodes FROM qDirectories");
request["qDirectories#variables.nNumber#"] = request.qDirectories.execute().getResult();
writeDump(valueList(request["qDirectories#variables.nNumber#"].id));
</cfscript>
Run Code Online (Sandbox Code Playgroud)
在发现这一点后,我认为arrayToList()会有所帮助.它确实有帮助,但即使有多行,它也只会带回一个值的数组.
有没有办法从动态命名的查询中获取特定列的所有值?
所以这可能只是我理解cftransaction标签的根本失败.
我有一堆Create Table SQL语句,一个接一个,在其中一个中有一个错误,这些都包含在一个巨人中cftransaction,但是当错误发生时,它不会回滚create语句.
<cfset variables.x = 0>
<cftry>
<cftransaction action="begin">
<cfquery name="variables.qTables" datasource="dev_db">
CREATE TABLE `dev_db`.`tbl_entries_import` (
`p_id` int( 11 ) default NULL ,
`p_Title` varchar( 255 ) default NULL ,
`p_FirstName` varchar( 255 ) default NULL ,
`p_unique_email` varchar( 255 ) default NULL ,
PRIMARY KEY ( `p_ID` ),
UNIQUE KEY `p_unique_email_UNIQUE` (`p_unique_email`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
</cfquery>
<cfset variables.x++>
<cftransaction action="setsavepoint" savepoint="#variables.x#"/>
<cfquery name="variables.qTables" datasource="dev_db">
CREATE TABLE `dev_db`.`tbl_entry2office_import` ( …Run Code Online (Sandbox Code Playgroud) 我现在正在开发足球网站,并尝试为排名表编写代码。我觉得必须有如下算法来开发排名表。

表结构是
tb_result
- matchno
- team1
- team2
- score1
- score2
Run Code Online (Sandbox Code Playgroud)
我将像输入数据一样
Matchno team1 team2 score1 score2
1 A-Team B-Team 1 3
1 C-Team D-Team 3 0
2 D-Team A-Team 3 3
2 B-Team C-Team 2 5
Run Code Online (Sandbox Code Playgroud)
因此,我想知道可以开发出任何算法或公式来获得排名表。
我正在尝试创建一个将利用 Microsoft Graph 的 Amazon Alexa 服务......这是用 Node.js 构建的。
目前,当使用我的标准 Outlook.com Microsoft 帐户登录时,我被重定向到一个 Microsoft 页面,上面写着
Microsoft 帐户不可用
此站点无法使用 Microsoft 帐户,因此您无法登录或注册。该站点可能遇到问题。
您可以在其他 Microsoft 站点和服务上登录或注册,或稍后在此站点上重试。
我一直https://login.microsoftonline.com/common/oauth2/v2.0/authorize在 Alexa 配置帐户链接部分中用作我的授权 URL。并在我的代码中使用 Node Microsoft Graph JavaScript SDK库。
我想知道我使用的 Node 库是否正确?它被弃用了吗?或者这里还有其他事情吗?
我对承诺还很陌生,我目前所做的所有道路都引导我走向Promise.all(),但我不确定如何处理结果。
我有一些这样的数据
let data = {
"format_oid":["35474527960032","2595837960032"]
};
Run Code Online (Sandbox Code Playgroud)
然后我将它传递给类似的函数
服务器.js
jobHandler.handle(data)
.then((info) => {
console.log(info);
})
.catch((err) => {
console.error(err);
});
Run Code Online (Sandbox Code Playgroud)
在我的jobHandler班级里我有
jobHandler.js
class Handler {
// constructor etc
handle(data) {
return this.extract(data);
}
extract(data) {
let request = data.format_oid.map( (releaseId) => {
return this._getReleaseId(releaseId);
});
return Promise.all(request);
}
_getReleaseId(releaseId) {
return new Promise( (resolve, reject) => {
if (_hasRelease(releaseId)){
resolve('yay');
} else {
reject('boo');
}
});
}
Run Code Online (Sandbox Code Playgroud)
目前request将有一系列 Promise,例如[ Promise { <pending> …
我想知道一个属性是否可以有多个规则。所有的例子似乎都表明你不能。
所以我想要这样的东西:
"properties": {
"track": {
"type": "string",
"pattern": "(exclusive)"
},
"track": {
"type": "string",
"pattern": "(featuring)"
}
}
Run Code Online (Sandbox Code Playgroud)
我知道在这个例子中要做的显而易见的事情是拥有模式"(exclusive)|(featuring)",但我想我想知道哪条规则失败了。同样,我以后可能想要更复杂的模式,这可能无法通过|.
我在Coldfusion中使用Java对象,所以我的代码有点偏.
我有一个看起来像这样的函数:
function getJODAOffset(sTimezone){
local.oDateTimeZone = createObject('java','org.joda.time.DateTimeZone');
local.oInstant = createObject('Java','org.joda.time.Instant');
local.oFormatter = createObject("Java",'org.joda.time.format.DateTimeFormat');
local.oFormatter = local.oFormatter.forPattern('ZZ');
local.tTime = local.oDateTimeZone.forID(arguments.sTimezone).getStandardOffset(local.oInstant); //sTimezone = 'Europe/London';
return local.oFormatter.withZone(local.oDateTimeZone.forID(arguments.sTimezone)).print(local.tTime);
}
Run Code Online (Sandbox Code Playgroud)
当我期待" +00:00 "时,这给了我" +01:00 " 的输出,我不知道为什么.
coldfusion ×6
coldfusion-9 ×4
node.js ×3
mysql ×2
algorithm ×1
bdd ×1
cfquery ×1
es6-promise ×1
java ×1
javascript ×1
jodatime ×1
json ×1
jsonschema ×1
mocha.js ×1
promise ×1
query-string ×1
sinon ×1
transactions ×1