我正在运行以下代码:https://github.com/rjrodger/simpledb
var simpledb = require('simpledb');
var sys = require('sys');
sdb = new simpledb.SimpleDB({keyid:'kye'
,secret:'mysectkey'});
var str="select * from youngib where createdon is not null order by createdon desc limit 10";
sdb.select (str, function( error, result ) {
console.log('attr1 = '+sys.inspect(error));
console.log('result = '+sys.inspect(result));
});
如果我在单独的文件中运行它会运行但如果我在我的项目中运行它会给我这个错误,为什么会出现这个错误?
{ Code: 'SignatureDoesNotMatch',
Message: 'The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.' }
问题是我在这里声明了
Array.prototype.in_array = function(p_val) {
for(var i = 0, l = this.length; i < l; i++) {
if(this[i] == p_val) {
return true;
}
}
return false;
}
由于这个没有执行simpledb,我不知道为什么,如果你知道,请告诉我。
如果你扩展Array.prototype
,你可能会遇到for ... in
循环的问题。
Array.prototype.foo = 42;
var array = [1,2,3];
for (var index in array) {
console.log(index + "," + array[index]);
// logs 0,1 1,2 2,3 foo,42
}
for in循环遍历所有属性。所以基本上你的第三方代码假设你没有扩展Array.prototype
。
由于这些原因,扩展原生原型是不好的做法。
对于in_array
方法,您可以使用
var contains = someArray.some(function(val) {
return val === p_val;
});
。