require("path").join用于连接URL 是否安全,例如:
require("path").join("http://example.com", "ok");
//returns 'http://example.com/ok'
require("path").join("http://example.com/", "ok");
//returns 'http://example.com/ok'
Run Code Online (Sandbox Code Playgroud)
如果没有,如果不编写完整的ifs代码,你会采用什么方式做这件事.
我想知道以下代码的行为背后的机制是什么:
res.send(200, { data: 'test data' });
console.log('still here...');
Run Code Online (Sandbox Code Playgroud)
我的理解是res.send不返回函数,而是关闭连接/结束请求.这可以解释为什么我仍然可以在res.send命令后执行代码(我查看了快速源代码并且它似乎不是异步函数).
还有什么其他的东西可以让我失踪吗?
我正在运行用Node.js编写的AWS Lambda服务,该服务与DynamoDB数据库交互.我的一种方法在DynamoDB上执行更新(AWS.DynamoDB.DocumentClient().update)以更新特定项目.但问题是,当我尝试更新项目并且该项目不存在时,更新方法会将此新项目添加到我的表格中.此行为也是文档中描述的默认行为.
我不希望我的方法创建一个新项目,如果它尚不存在.我希望这只是在记录存在时才更新.如果它不存在,它必须什么都不做.我该如何实现这一目标?我希望我能够使用ConditionalExpression来实现这一目标,但我在这方面所做的尝试并没有成功.
下面给出了我发送给更新功能的当前参数的示例.在此示例中,我想更新具有userId 123的用户,并且我想为此用户将isActive字段设置为"false"(但我只想在用户123实际存在的情况下执行此操作!)
const params = {
TableName: 'users',
Key: {
userId: '123',
},
ExpressionAttributeValues: {
':isActive': 'false'
},
UpdateExpression: 'SET isActive = :isActive',
ReturnValues: 'ALL_NEW',
};
Run Code Online (Sandbox Code Playgroud) 我希望能够为我的游戏制作发布和构建.
我知道GitHub有发布,但我使用的是BitBucket.
有没有人知道如何使用BitBucket发布版本就像检查点一样,所以我可以为每次更新记录文件?
因此,我打算制作一个应用程序(PHP/MySQL),它可以节省大量资金,我正在考虑如何存储和操作钱,参考PHP浮点数据类型和MySQL十进制.
我在考虑两种选择.其中之一是以整数分钱格式($ dollar*100)操作和存储货币,以便不处理浮动预处理并将其作为整数存储在DB中.另一个是以DB为单位存储在十进制中,并在PHP中使用BC Math进行计算.
所以我一整天都在谷歌搜索哪个是最好的选择,并没有找到明确的答案.我见过的唯一合理的选择是整数美分(我不喜欢它,因为它意味着在浏览器中的每次显示之前以及存储在数据库之前,很多都会从美元转换为美分和反之亦然).
此外,人们抱怨MySQL十进制(MySQL将小数存储为字符串,将它们作为浮点数等操作),但那是旧帖子.根据MySQL文档,当前版本正确处理小数,唯一的抱怨是它截断超过声明的分数长度的值的分数(例如,如果在声明为十进制的列(9,2)中存储值12.326) ,但是从我的调查来看,它不仅仅是截断(12.326变为12.33),这在我看来是正确的.
并且,我没有找到任何关于将钱存储为小数并使用PHP BCMath进行计算的建议,并且在我看来这是因为很少有人知道BC和GMP数学函数.
那么,考虑到精度,速度(BCMath计算速度,MySQL十进制速度与整数)和编程舒适度,最佳选择是什么?
我正在寻找一种方法来测试一些给定的List是否是不可修改的.
我有一个对象,有一个List<NoMatter>,为了提供方法,addNoMatter(NoMatter nm)而不是允许API客户端只是做.getNoMatters().add(nm);我总是返回此列表的不可修改版本,所以客户端仍然能够拥有该列表.我按如下方式做到:
public List<NoMatter> getNoMatters() {
return Collections.unmodifiableList(this.noMatters);
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我正在进行测试时,我只是无法检查此对象是否为UnmodifiableList类型.我的第一次尝试是:
@Test
public void checkIfListIsImmutable(){
assertTrue("List is not immutable", this.myObj.getNoMatters() instanceof UnmodifiableList);
}
Run Code Online (Sandbox Code Playgroud)
碰巧我不能似乎能够导入类型UnmodifiableList也不java.util.Collections$UnmodifiableRandomAccessList是我所得到的,当我尝试System.out.println(myObj.getNoMatters().getClass().getName());在控制台.
那我怎么能实现呢???
PS.:我知道我可以通过以下方式通过此测试:
@Test(expected = UnsupportedOperationException.class)
public void checkIfListIsImmutable(){
this.myObj.getNoMatters().add(null);
}
Run Code Online (Sandbox Code Playgroud)
编辑:上面的测试不授予我我处理的列表不是不可变的,因为我需要测试每个可能修改我的原始列表的方法,包括.remove(),. clear(),. shuffle ()等!这就是为什么我认为这不是一个很好的方法.
>>>但我仍然相信它甚至不是一个优雅的解决方案!<<<
我试图将一个属性添加到sequelize实例,然后再将其传递回客户端.
router.get('/cats/1', function (req, res) {
Cat.findOne({where: {id: 1}})
.then(function (cat) {
// cat exists and looks like {id: 1}
cat.name = "Lincoln";
// console.log of cat is {id: 1, name: Lincoln}
res.json(cat);
});
});
Run Code Online (Sandbox Code Playgroud)
客户端只看到{id: 1}而不是新添加的密钥.
深入了解C#,我遇到了一个与对象引用相等的小问题.我说我有两个字符串:
String a = "Hello world!";
String b = "Bonjour le monde";
bool equals = ReferenceEquals(a, b); // ******************* (1)
b = "Hello world!";
equals = ReferenceEquals(a, b); // ******************* (2)
Run Code Online (Sandbox Code Playgroud)
(1)是false和那是预期的.ReferenceEquals 文档说
ReferenceEquals比较实例
但是之后:
true?a和b它们不是同一个对象吗?如果是,那么它们是如何变得相同的,因为我从未明确地做过a=b我们的Web应用程序有很多ajax调用,而且这些都是https请求(我们的IT团队要求),是的,我们已经打开了标题以允许跨域.但问题是我们在内部为所有应用程序使用了自己的自定义证书,所以基本上我在调用ajax时会出错:
无法加载资源:net :: ERR_INSECURE_RESPONSE
如果我在浏览器中打开URL并接受证书,则ajax调用可以正常工作.所以我的问题是,有没有办法通过Javascript处理这个?或者添加可信证书会解决此问题?即使在我们添加可信证书后,我还会在ajax中遇到任何问题吗?
注意:我们正在Chrome浏览器中测试所有这些
我试图运行一个脚本,以便在sequelize syncs via之前从数据库中删除所有表 sequelize.sync({ force: true });
当我从控制台运行脚本时,脚本运行没有问题,当我尝试从我的node.js应用程序运行它时会出现问题; MySql返回一个解析错误.
var dropAllTables = [
'SET FOREIGN_KEY_CHECKS = 0;',
'SET GROUP_CONCAT_MAX_LEN = 32768;',
'SET @tables = NULL;',
"SELECT GROUP_CONCAT('`', table_name, '`') INTO @tables FROM information_schema.tables WHERE table_schema = (SELECT DATABASE());",
"SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);",
"SELECT IFNULL(@tables, 'SELECT 1') INTO @tables;",
'PREPARE stmt FROM @tables;',
'EXECUTE stmt;',
'DEALLOCATE PREPARE stmt;',
'SET FOREIGN_KEY_CHECKS = 1;',
"SET GLOBAL sql_mode = 'STRICT_ALL_TABLES';"
].join(' ');
sequelize.query(dropAllTables, {
raw: true
}).then(function() { …Run Code Online (Sandbox Code Playgroud) node.js ×3
javascript ×2
mysql ×2
sequelize.js ×2
ajax ×1
bitbucket ×1
c# ×1
collections ×1
currency ×1
decimal ×1
express ×1
git ×1
java ×1
jquery ×1
php ×1
postgresql ×1
release ×1
snapshot ×1
ssl ×1
string ×1
tdd ×1
unit-testing ×1
url ×1