我的 React 项目中有一些代码,如下所示:
const url = '/create-label-shipments.json';
const filters = Object.assign({}, this.state.filters);
filters.page = this.state.page;
const response = await axios.get(url, {params: filters});
Run Code Online (Sandbox Code Playgroud)
现在我知道 axios 接受该params对象并使用查询参数创建一个新的 url,例如'/create-label-shipments.json?page=1&date=2020-03-20&etc...'
我希望我能做的是在代码的不同部分调用一些 axios 函数,其功能与上面完全相同,但它不是发出请求并给我响应,而是只给我 URL。
const url = '/create-label-shipments.csv';
const filters = Object.assign({}, this.state.filters);
const url = await axios.getUrl(url, {params: filters});
// at this point, no request was made, and url === '/create-label-shipments.csv?page=1&date=2020-03-20&etc...'
Run Code Online (Sandbox Code Playgroud) 我在这里关注这个,看看如果有人打开了多个标签,我是否可以在我网站的所有打开的网页上启用更新。
基本上,我设置了侦听器并检查“购物车”键是否已更改
window.addEventListener('storage', function(e) {
if (e.key === "cart") {
console.log(`cart changed: ${e.newValue}`);
}
});
Run Code Online (Sandbox Code Playgroud)
当我从同一网站上的另一个选项卡更改 localStorage.cart 时,事件在第一个选项卡中触发得很好:
setInterval(function(){
localStorage.cart = "localStorage 1";
setTimeout(function(){
localStorage.cart = "localStorage 2";
},2000);
},4000);
Run Code Online (Sandbox Code Playgroud)
但是当我使用 sessionStorage 而不是 localStorage 时,它不会:
setInterval(function(){
sessionStorage.cart = "sessionStorage 1";
setTimeout(function(){
sessionStorage.cart = "sessionStorage 2";
},2000);
},4000);
Run Code Online (Sandbox Code Playgroud)
'storage' 事件是否只为 localStorage 而不是 sessionStorage 触发?
仅在 chrome 上测试。
一直在开发一个Android Webview应用程序,我刚刚开始使用其中的node_modules文件夹,所以很自然地我做了一些关于如何排除它的研究,我最终在这里提出了这个问题
尝试了一些答案,实际上最适合我的是关于 aaptOptions 的答案
当然,我很自然地在尝试它,试图找出有效的方法,并且我成功地从调试 apk 中排除了一些文件夹。
aaptOptions {
ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:'
}
Run Code Online (Sandbox Code Playgroud)
我确实可以确认这些文件夹不包含在 Android studio 的最终 APK 中!成功!
然后我意识到我可以做一些聪明的事情:当我运行我的应用程序时,在我的端测试它,调试它,我喜欢在某些地方自动放入某些凭据 - 我用 javascript 做到这一点 - 但是显然,我不希望这些凭据包含在我可能发送到世界各地的 APK 中 - 尽管我已经对其进行了编码,除非我正在调试,否则不会自动输入凭据,但凭据实际上仍然在 javascript 文件中,想必有人可以进去看看并看到它们!
所以我的想法是创建一个文件“example-creds.js”,并使用 aaptOptions 不包含该文件,仅在发布版本上,所以我想出了一些看起来大约像这样的东西(删除了额外的细节):
android {
buildTypes {
release {
aaptOptions {
ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:!example-creds.js:'
}
}
debug {
aaptOptions {
ignoreAssetsPattern '!node_modules:!jsunmin:!.idea:!jade:!css-scss:'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用!我已经测试过它,它似乎可以运行最后定义的 aaptOptions ,无论构建类型如何。如果我将发布放在调试之后,则在任何一个构建中都不会获得示例信用。如果我在发布之后进行调试,我会在两者中获得示例信用。
我怎样才能得到我正在寻找的东西?
我一直在四处寻找这个问题的答案,但那里有一些相互矛盾或模棱两可的信息,发现很难找到确定的答案。
我的上下文:我在 node.js 中使用 'mssql' npm 包。我的 SQL 服务器是 Microsoft SQL Server 2014。
我有一条记录,它可能已经存在于表中,也可能不存在——如果存在,我想更新它,否则我想插入它。我不确定最佳 SQL 是什么,或者是否应该在 mssql 中运行某种“事务”。我发现了一些看起来不错的选项,但我不确定其中的任何一个:
选项 1: 如何更新(如果存在或插入)
问题是我什至不确定这是 MSSQL 中的有效语法。不过我确实喜欢它,而且它似乎也支持我喜欢的同时执行多行。
INSERT INTO table (id, user, date, points)
VALUES (1, 1, '2017-03-03', 25),
(2, 1, '2017-03-04', 25),
(3, 2, '2017-03-03', 100),
(4, 2, '2017-03-04', 150)
ON DUPLICATE KEY UPDATE points = VALUES(points)
Run Code Online (Sandbox Code Playgroud)
选项 2:
不知道这个有没有问题,只是不确定它是否是最佳的。似乎不支持多个同时行
update test set name='john' where id=3012
IF @@ROWCOUNT=0
insert into test(name) values('john');
Run Code Online (Sandbox Code Playgroud)
选项 3:合并,https : //dba.stackexchange.com/questions/89696/how-to-insert-or-update-using-single-query
有人说这个有点bug什么的?这显然也支持一次我喜欢的多个。
MERGE dbo.Test WITH …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个使用Dynamics NAV Odata提要的node.js脚本。
我的Dynamics NAV设置中同时有一个UserAccount / PW和一个Web服务访问密钥。
我一辈子都找不到如何正确验证身份的方法,无论是在标头中添加内容还是在URL查询中添加内容。我尝试使用'username:password @ server'格式。我尝试将其编码为base64并将其添加到“身份验证”值的标题中。
该文档本身是非常特定的。我知道如何生成密钥,但是我不知道如何正确地将该密钥发送给NAV进行身份验证。
我正在使用'request-promise'npm软件包,该软件包带有一个'options'参数,可以在其中添加任意的标头key:value对。请有人给我一些有关如何向NAV进行身份验证的指示。我已经花了几个小时了。
我有我的 User 表,当你完成所有工作时 laravel 附带的默认表php artisan make:auth,并且我添加了一个布尔system_admin列和其他几个类似的列
现在,当有人注册到该网站时,我不希望恶意者能够授予自己该权利,因此我没有将该字段放入fillableUser.php 模型文件的数组中。
那么第一个问题:这是出于正确原因的正确决定吗?
但现在我正在开发一个系统管理页面,它应该允许人们修改类似的属性,但在我的路线中,只能由系统管理员访问,我的代码如下所示:
public function updateUser($userId, Request $request) {
$user = User::find($userId);
$update = $request->all();
$user->update($update);
Run Code Online (Sandbox Code Playgroud)
当然,因为这些列不是fillable,所以此请求不适用于这些字段。
但我想要它,因为这个特定的路由受到中间件的保护,该中间件验证 system_admin 是否应该有权访问它。
那么,如何更新这些不可填写的列,而又不允许非系统管理员更新相同的列呢?
我有一份工作是为了测试失败是如何工作的:
<?php
namespace App\Jobs;
use App\ApiUser;
use App\Helpers\Helper;
use Exception;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class FakeJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $apiUser;
public function __construct(ApiUser $apiUser) {
$this->apiUser = $apiUser;
}
public function handle() {
throw new Exception('time is even');
}
public function failed(Exception $exception) {
// Send user notification of failure, etc...
$path = storage_path('logs/s3_logs/FakeJob_failed_' . Helper::generateRandomString(5) . '.txt');
file_put_contents($path, $exception->getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
当我正常调度时,它会转到failed函数并完全按预期写入文件。
但是,当我这样做时FakeJob::dispatchNow($apiUser);,它根本不会这样做...... …
我有一个使用网络工作者清理indexedDB数据库的应用程序。我已经设置好它,因此可以从全局函数调用中启动它,如果该函数在完成之前再次被调用,它不会重新启动,但是如果函数完成后被调用,它会通过创建一个新实例而重新启动。工人。这一切对我来说都很好。
完成工作后,我是否需要从某种意义上删除,销毁或终止工作程序的旧实例?
我需要在我的网站前端使用 api,但我不想将该 api 的密钥暴露给我的前端用户,所以我决定创建一个代理。然而,我认为我不一定以最干净、最直接、最像 Laravel 或 Guzzle 的方式完成它。我来展示一下我的作品:
在 web.php 中,我添加了一条如下所示的路由:Route::post('/address-api/{path?}', 'Controller@addressApi')->where('path', '.*');这样,之后的整个路径/address-api都会传递到我的控制器,因此我可以假设将任何 post 请求代理到该 api。
然后Controller.php我做了这个:
public function addressApi($path, Request $request)
{
if (!Str::startsWith($path, '/')) $path = '/' . $path; // make sure it starts with /
$url = 'https://api.craftyclicks.co.uk/address/1.1' . $path;
$postData = $request->all();
$postData['key'] = env('CRAFTYCLICKS_KEY');
$client = new Client();
$response = $client->request('POST', $url, [
'json' => $postData
]);
return response()->json(json_decode($response->getBody(), true));
}
Run Code Online (Sandbox Code Playgroud)
因此,无论他们发布到我的 api 的 json 是什么,我都会发布到 CraftyClicks api,但我将我们的密钥添加到 json …
javascript ×3
laravel ×3
php ×3
android ×1
axios ×1
dynamics-nav ×1
eloquent ×1
guzzle ×1
html ×1
html5 ×1
node.js ×1
queue ×1
sql ×1
sql-server ×1
web-services ×1
web-worker ×1