get-mapping 相关问题


通过更少的 Java API 调用来映射 Google 云端硬盘内容的有效方法

大家好,我有一个代码,用于列出共享驱动器中存在的文件(以便稍后下载并创建相同的文件夹路径) 目前我做这样的事情: 哈希映射 大家好,我有一个代码,用于列出共享驱动器中存在的文件(以便稍后下载并创建相同的文件夹路径) 目前我正在做这样的事情: HashMap<String, Strin> foldersPathToID = new HashMap<>(); //searching all folders first saving their IDs searchAllFoldersRecursive(folderName.trim(), driveId, foldersPathToID); //then listing files in all folders HashMap<String, List<File>> pathFile = new HashMap<>(); for (Entry<String, String> pathFolder : foldersPathToID.entrySet()) { List<File> result = search(Type.FILE, pathFolder.getValue()); if (result.size() > 0) { String targetPathFolder = pathFolder.getKey().trim(); pathFile.putIfAbsent(targetPathFolder, new ArrayList<>()); for (File file : result) { pathFile.get(targetPathFolder).add(file); } } } 递归方法在哪里: private static void searchAllFoldersRecursive(String nameFold, String id, HashMap<String, String> map) throws IOException, RefreshTokenException { map.putIfAbsent(nameFold, id); List<File> result; result = search(Type.FOLDER, id); // dig deeper if (result.size() > 0) { for (File folder : result) { searchAllFoldersRecursive(nameFold + java.io.File.separator + normalizeName(folder.getName()), folder.getId(), map); } } } 搜索功能是: private static List<com.google.api.services.drive.model.File> search(Type type, String folderId) throws IOException, RefreshTokenException { String nextPageToken = "go"; List<File> driveFolders = new ArrayList<>(); com.google.api.services.drive.Drive.Files.List request = service.files() .list() .setQ("'" + folderId + "' in parents and mimeType" + (type == Type.FOLDER ? "=" : "!=") + "'application/vnd.google-apps.folder' and trashed = false") .setPageSize(100).setFields("nextPageToken, files(id, name)"); while (nextPageToken != null && nextPageToken.length() > 0) { try { FileList result = request.execute(); driveFolders.addAll(result.getFiles()); nextPageToken = result.getNextPageToken(); request.setPageToken(nextPageToken); return driveFolders; } catch (TokenResponseException tokenError) { if (tokenError.getDetails().getError().equalsIgnoreCase("invalid_grant")) { log.err("Token no more valid removing it Please retry"); java.io.File cred = new java.io.File("./tokens/StoredCredential"); if (cred.exists()) { cred.delete(); } throw new RefreshTokenException("Creds invalid will retry re allow for the token"); } log.err("Error while geting response with token for folder id : " + folderId, tokenError); nextPageToken = null; } catch (Exception e) { log.err("Error while reading folder id : " + folderId, e); nextPageToken = null; } } return new ArrayList<>(); } 我确信有一种方法可以通过很少的 api 调用(甚至可能是一个调用?)对每个文件(使用文件夹树路径)进行正确的映射,因为在我的版本中,我花了很多时间进行调用 service.files().list().setQ("'" + folderId+ "' in parents and mimeType" + (type == Type.FOLDER ? "=" : "!=") + "'application/vnd.google-apps.folder' and trashed = false").setPageSize(100).setFields("nextPageToken, files(id, name)"); 每个子文件夹至少一次......并且递归搜索所有内容需要很长时间。最后,映射比下载本身花费的时间更多...... 我搜索了文档,也在此处搜索,但没有找到任何内容来列出具有一个库的所有驱动器调用任何想法? 我想使用专用的 java API 来获取共享 GoogleDrive 中的所有文件及其相对路径,但调用次数尽可能少。 提前感谢您的时间和答复 我建议您使用高效的数据结构和逻辑来构建文件夹树并将文件映射到其路径,如下所示 private static void mapDriveContent(String driveId) throws IOException { // HashMap to store folder ID to path mapping HashMap<String, String> idToPath = new HashMap<>(); // HashMap to store files based on their paths HashMap<String, List<File>> pathToFile = new HashMap<>(); // Fetch all files and folders in the drive List<File> allFiles = fetchAllFiles(driveId); // Build folder path mapping and organize files for (File file : allFiles) { String parentId = (file.getParents() != null && !file.getParents().isEmpty()) ? file.getParents().get(0) : null; String path = buildPath(file, parentId, idToPath); if (file.getMimeType().equals("application/vnd.google-apps.folder")) { idToPath.put(file.getId(), path); } else { pathToFile.computeIfAbsent(path, k -> new ArrayList<>()).add(file); } } // Now, pathToFile contains the mapping of paths to files // Your logic to handle these files goes here } private static List<File> fetchAllFiles(String driveId) throws IOException { // Implement fetching all files and folders here // Make sure to handle pagination if necessary // ... } private static String buildPath(File file, String parentId, HashMap<String, String> idToPath) { // Build the file path based on its parent ID and the idToPath mapping // ... }


Powershell 无效类错误

尝试运行powershell命令 获取 WmiObject win32_physicalmemory PS C:\> Get-WmiObject win32_physicalmemory Get-WmiObject:无效类“win32_physicalmemory” 在行:1 个字符:1...


刷新 AWS ECR 注册表的令牌

我有一个用于部署docker镜像的helm图表。我使用以下命令将秘密配置到 kubernetes 中: apt-get 安装 docker sudo apt-get install python python3-pip aws ecr get-login-password --region us-...


apt-get update 无法用作 azure 自定义脚本扩展

我正在使用带有自定义脚本扩展的 Azure ARM 模板部署 linux ubuntu 16.04 LTS VMSS。 customscript.sh的内容: apt-get 更新 apt-get install build-essential -y ... 但它失败了...


next.js 14 错误:无法读取未定义的属性(读取“get”)”

官方示例https://github.com/vercel/next.js/tree/canary/examples/next-forms在createTodo时出现错误“Error: Cannot readproperties of undefined (reading 'get')”。但是……


Struts 2 与 Apache Shiro 集成时如何显示结果页面

使用: struts2 2.5.10, 春天 4.x, struts2-spring-插件2.5.10, 希罗1.4.0, Shiro-Spring 1.4.0。 网络.xml: 使用: struts2 2.5.10, 春季 4.x, struts2-spring-插件2.5.10, 四郎1.4.0, shiro-spring 1.4.0. web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:beans.xml</param-value> </context-param> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- shiro filter mapping has to be first --> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> beanx.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean name="loginAction" class="example.shiro.action.LoginAction" > </bean> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/login.jsp" /> <property name="filterChainDefinitions"> <value> /login.jsp = authc /logout = logout /* = authc </value> </property> </bean> <bean id="iniRealm" class="org.apache.shiro.realm.text.IniRealm"> <property name="resourcePath" value="classpath:shiro.ini" /> </bean> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="iniRealm" /> </bean> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/> </beans> struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="default" extends="struts-default"> <action name="list" class="loginAction" method="list"> <result name="success">/success.jsp</result> <result name="error">error.jsp</result> </action> </package> </struts> index.jsp: <body> <s:action name="list" /> </body> login.jsp 看起来像: <form name="loginform" action="" method="post"> <table align="left" border="0" cellspacing="0" cellpadding="3"> <tr> <td>Username:</td> <td><input type="text" name="username" maxlength="30"></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="password" maxlength="30"></td> </tr> <tr> <td colspan="2" align="left"><input type="checkbox" name="rememberMe"><font size="2">Remember Me</font></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" name="submit" value="Login"></td> </tr> </table> </form> LoginAction.list(): public String list() { Subject currentUser = SecurityUtils.getSubject(); if(currentUser.isAuthenticated()) {System.out.println("user : "+currentUser.getPrincipal()); System.out.println("You are authenticated!"); } else { System.out.println("Hey hacker, hands up!"); } return "success"; } shiro.ini: [users] root=123,admin guest=456,guest frank=789,roleA,roleB # role name=permission1,permission2,..,permissionN [roles] admin=* roleA=lightsaber:* roleB=winnebago:drive:eagle5 index.jsp、login.jsp、success.jsp放在webapp下 我想要的是:输入LoginAction.list()需要进行身份验证,如果登录成功,则运行LoginAction.list()并返回"success"然后显示定义为Struts操作结果的success.jsp。 现在登录成功后可以执行LoginAction.list(),但是success.jsp不显示,浏览器是空白页面。 为什么? 我找到了原因:我在index.jsp中使用了<s:action name="list" />,但是struts文档说如果我们想用<s:action>看到结果页面,那么我们必须将其属性executeResult设置为true,即就像<s:action name="list" executeResult="true"/>。 在我看来,这有点奇怪,这个属性默认应该是 true。 有一个示例,您应该如何使用 Shiro applicationContext.xml 进行配置: <property name="filterChainDefinitions"> <value> # some example chain definitions: /admin/** = authc, roles[admin] /** = authc # more URL-to-FilterChain definitions here </value> </property> 以 /admin/ 开头的 URL 通过角色 admin 进行保护,任何其他 URL 均不受保护。如果 Struts 操作和结果 JSP 不在受保护区域中,则会显示它们。


声明 MessageChannel beans 的首选方式

我在网上看到的大多数资源都是通过以下方式声明MessageChannels: @豆 消息通道 myChannel() { 返回新的 MessageChannels.direct().get(); } 看来 .get() 方法...


在Powershell中获取StdRegProv类

我能找到的在 Powershell 中获取 StdRegProv WMI 类实例的唯一方法是 $StdRegProv = Get-WmiObject -List -Namespace root\default -ComputerName "my_computer" -Credential $cred | $StdRegProv = Get-WmiObject -List -Namespace root\default -ComputerName "my_computer" -Credential $cred |什...


Get-PnPWebPart - 如何按照页面中使用的顺序获取 Web 部件

我正在使用 pnp 库来检索 Sharepoint 页面中使用的 Web 部件 Get-PnPWebPart -ServerRelativePageUrl“文件路径/test.aspx” 但 webpart 的顺序是


GET 请求时 TLS 初始化失败

我从qt/c++开始,在我的项目中我需要制作一个json post/get/put,但我试图做一个简单的获取请求,但我有一个错误:qt.network.ssl: QSslSocket ::connectToHostEncrypted:TLS


华为 E3372h-320 hilink USSD /api/ussd/get 和 /api/ussd/send 错误

我正在尝试发送 USSD 并开始工作,但出现如下错误。 ussd/send(错误111016)和ussd/get(125003)。您能告诉我哪里可能出错吗? 脚本 #!/b...


Ignite Rest Api - 增量方法

无法获取增量值,当我执行 get 操作时,我得到的是我最初放置的值,而不是增量后的值 你好, 我无法获得增量值,当我执行 get 时,我得到 v...


通过Angular到Springboot访问POST失败但GET成功,Postman适用于GET和POST

我正在使用示例 Angular 应用程序来测试 Okta 与 springboot 应用程序的集成。 前端示例:https://github.com/okta-samples/okta-angular-sample 我有一个带有


在 Docker 中的 Ubuntu 上安装最新版本 Node (v20) 的说明不起作用?

我只是按照说明在 Ubuntu 上的 docker 中安装了最新版本的 Node (v20),在我的 Dockerfile 中包含以下内容: 来自 --platform=linux/amd64 ubuntu:22.04 运行 apt-get update 运行 apt-get...


Flutter Web 应用程序在发送带有 body 的 GET 请求时遇到错误

我目前正在开发一个 Flutter Web 应用程序,在尝试发送带有正文的 GET 请求时遇到了一个问题。该应用程序在 Chrome 上按预期运行,但是...


在安装新版本操作之前无法创建'./usr/bin/ssh'的备份链接

最近我的实验室ubuntu服务器遇到了一个麻烦的问题。我想重新安装 openssh 服务器,所以我运行命令 sudo apt-get 安装 openssh-client sudo apt-get 安装 openssh-server


Laravel Cashier Stripe 错误default_ payment_method

我需要进行用户订阅Stripe。我使用支付页面: 公共函数 paymentForm() { $id = equest()->get('id'); $plan = Plan::find(1); $intent = auth()->user()->


需要什么才能使图请求成功?

在 GET 请求上: https://graph.microsoft.com/v1.0/users/me/joinedTeams 从以下位置检索 accesstoken:https://login.microsoftonline.com/4c3a1b30-xxxx-xxxx-9581-0281c4427992/oauth2/token 我是


具有 TimestampableEntity 特征的实体在 PUT 操作中失败

我正在全新安装 API Platform (v3.2.7),并且使用 Gedmo\Timestampable\Traits\TimestampableEntity 这是我的实体(问候语示例) 我正在全新安装 API Platform (v3.2.7),并且正在使用 Gedmo\Timestampable\Traits\TimestampableEntity 这是我的实体(问候语示例) <?php namespace App\Entity; use ApiPlatform\Metadata\ApiResource; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Gedmo\Timestampable\Traits\TimestampableEntity; #[ApiResource] #[ORM\Entity] class Greeting { use TimestampableEntity; #[ORM\Id] #[ORM\Column(type: "integer")] #[ORM\GeneratedValue] private ?int $id = null; #[ORM\Column] #[Assert\NotBlank] public string $name = ""; public function getId(): ?int { return $this->id; } } 和我的 config/services.yaml gedmo.listener.timestampable: class: Gedmo\Timestampable\TimestampableListener tags: - { name: doctrine.event_listener, event: 'prePersist' } - { name: doctrine.event_listener, event: 'onFlush' } - { name: doctrine.event_listener, event: 'loadClassMetadata' } 它在 POST 操作上工作正常,但在执行 PUT 时失败。我收到此错误 执行查询时发生异常:SQLSTATE[23000]: 完整性约束违规:1048 列“created_at”不能 空 我使用的版本是:symfony 6.4.1,doctrine 2.12,gedmo 3.14 我最终做的是使用 PATCH 而不是 PUT。所以我可以编辑部分实体,并且特征仍然更新 updated_at 字段


如何通过对 18k 邮箱进行格式化来加速 PowerShell 脚本提取 Get-EXOMailbox 和 Get-EXOMailboxStatistics 信息

我是一名 PowerShell 初学者用户,我编写了一个脚本来提取有关我的组织(大约 18,000 个用户)中每个用户的邮箱和存档的特定信息。目前大约需要24...


Get-AzVMImage 不输出 PSVirtualMachineImageDetail

我试图从天蓝色的虚拟机映像中获取详细信息,但该信息似乎不存在。 $location =“瑞典中央” $publisher = "MicrosoftSQLServer" #G...


NVMe S.M.A.R.T.数据检索

我开发了一个程序,能够在 WMI 的帮助下检索 SATA 设备的智能数据,如下所示: Get-WmiObject -命名空间“Root\WMI”-类“MSStorageDriver_ATAPISMartData”|塞勒...


Spring Boot中无法通过GET方法获取图像?

这是我的实体类 @ToString @数据 @实体 公开课产品{ @ID @GenerateValue(策略 = GenerationType.IDENTITY) 私有 int id; 私有字符串名称; 私人


如何检测Rust Rocket_ws客户端与WebSocket断开连接

从rocket_ws文档(https://api.rocket.rs/v0.5/rocket_ws/)我知道我可以使用这段代码与客户端建立websocket连接: #[get("/echo?channel")] fn echo_ch...


为什么在某种场景下要使用await

如果我有一个 GET 请求,只是从数据库返回一些内容,我应该这样做: 返回 _dbContext.MyTable.Where(...).ToList(); 或者: 返回等待_dbContext.MyTable.Where(...)。


如何在Ubuntu上安装Xdebug?

我正在尝试在 Ubuntu 上安装 xdebug: sudo apt-get install php-xdebug 并出现以下错误: 需要获取 806 kB 的档案。此操作后,4.423 kB 额外的磁盘空间...


升级到micronaut 4后Micronaut消费和生产停止工作

在 micronaut 版本 3 上,它工作正常,在迁移到 micronaut 4 时,停止工作 在注释有的端点中 @Get("/{someId}/someAction", 产生 = ["application/some.v1+json&


如何修复“ConnectionString 属性尚未初始化。”在.Net

我正在使用 Docker 容器开发一个 .Net api,但目前在 swagger 中请求 GET 请求时,它会返回“ConnectionString 属性尚未初始化”。其中有...


通过powershell触发azure操作组

我可以使用 Get-AzActionGroup 命令检索我的操作组。但我想通过我的 Runbook 使用 powershell 命令激活/触发/触发该操作组。这有可能吗?还有...


服务器返回“405 Method Not allowed”。仅限一条路线

主页的web.php中的这条路线 路线::get('/', 'App\Http\Controllers\IndexController@index'); 如果我运行 php artisan optimize 或 artisan route:cache,页面会变成错误 405 哎呀!错误


Powershell 确定它是 Active Directory 中的用户还是组

我正在尝试为 Get-LocalGroupMember 问题创建一个解决方法,如下所述: https://github.com/PowerShell/PowerShell/issues/2996 读完之后,我想出了这个函数来...


在android中的服务中访问viewModel

我们如何在服务中初始化viewModel。 在片段中,我们使用 Kotlin 委托“by ActivityViewModels”来完成此操作。 或者我们可以使用 ViewModelProvider().get 来完成。 但据我...


替换R函数中变量名的多个实例并保存修改后的函数

上下文 考虑以下愚蠢的 MWE: 老有趣<- function(x) { VarA <- sum(x) VarA <- 2 * VarA VarX <- VarA %% 2 } I want to replace VarA with VarB and VarX VarY to get: new...


Powershell cmdlet Get-WinEvent 导致内存泄漏

我正在编写一个简单的 Powershell 脚本来将 Windows EventLogs 转发到外部 Syslog 服务器 - 该脚本应该作为服务持续运行。为了获得前夕的事件...


无法通过PAT令牌调用Azure DevOps Rest Api

我正在尝试使用 Azure DevOps Rest api 将保存在本地目录(桌面)中的 json 文件导入到 Azure DevOps 库变量组。 这是剧本。 $jsonbody = Get-Content -Path "C: ar...


在 Stripe 结帐会话中集成自定义税费和折扣

您能帮我将税收和折扣整合到我的 Stripe sission 中吗 这是我当前的代码 类 CreateCheckoutSessionOrderView(视图): def get(自身, 请求, *args, **kwargs): 或者...


从HttpClient获取图片

我需要帮助从网络服务检索图片。这是一个 GET 请求。 目前我正在检索响应,并且能够将其转换为字节数组,这就是我想要的,但是......


MLFlow 安装错误,“AttributeError: 'EntryPoints' 对象没有属性 'get'”

尝试在新的虚拟机上安装 ML Flow 并遇到以下错误。 虚拟机配置:Windows Server 2022 Datacenter 21H2 20348.2113 安装 MLFlow 的步骤: 安装Python 3.12.1 pip3 安装我...


Azure 自动化 Runbook - 返回错误的资源组名称。 “找不到资源组“{resource-group-name}””

我们在 Runbook 中使用以下代码,它返回的资源组名称值不正确。 $AzureVMs = Get-AzVM“SH-COMPANY-AD-0” $AzureVM | ForEach-对象 { $AzureV...


C# LINQ:获取最高价格的商品

我有一个我的对象列表: MyObj 类 { 公共字符串标题{获取;放; } 公共十进制价格 { get;放; } 公共字符串其他数据{获取;放; } } var 列表 = 新列表...


loadrunner 中的并行调用响应时间

我有 3 个 get api 调用。我已将它们放在 web_concurrent_start 和 end 中。如何在Loadrunner中检查每个API的响应时间 我的工作:我们不能将 lr_start_transaction 和 end 放在里面


GraalVM 本机映像在 IDE (java17) 中工作,但在构建本机映像时不起作用

我有一个 spring shell 应用程序,它可以执行非常简单的操作,例如从终端发送 get 请求。 pom.xml 依赖项 org.springframework.boot...


如何在 svelteKit api 目录中创建 catch-all 路由?

我正在 sveltekit 中创建 API 端点。所有 API 端点都位于 /src/routes/api/DIR 内。 如何为任何不存在的 GET、POST、DELETE 和 PUT 请求创建主捕获所有路由?


尝试更新实体内的列表总是给我一个错误

我正在使用领域驱动设计。两个实体之间存在关系: 费用和员工 费用有员工名单 费用: 私有列表 _Employees { get;放; } = 新 L...


调用创建文档引用计数的get方法是否为读取?

在 Python Firestore API 中,将文档添加到 Firestore 集合后,将返回所创建文档的时间戳和文档引用。是否算作数据库中的读取...


如何在laravel中通过用户名查找用户?

我在构建 Laravel API 时尝试通过用户名查找用户。这就是我正在尝试的 api.php 路线::get('用户配置文件/用户/{用户}', 'UserProfileController@getUserProfile'); 控制器 公开


TypeError:“列表”对象不可调用;语法错误

我收到一个 TypeError: 'list' 对象在我正在构建的脚本中不可调用。 类型错误 鉴于这是对 url 的 get 请求,打印结果的正确语法是什么......


通过雄辩的模型执行查询后,如何查看我的 mssql 服务器中运行的查询?

在我的 Laravel Tinker 会话中,我运行以下命令: $records = MyModel::with('parent','children')->whereNull('parent_id')->get(); 模型是: 命名空间 App\Models; 使用 Illuminate\Database\


如何在 Blazor C# 中向我的 API 提交数据?

我使用 MediatR 编写了一个简单的 API,并附有我在网上找到的示例。它有一个 GET 和一个 POST。 API 获取: 命名空间 API.Features.My.Queries; [路线(“api/mydata/{myid}”)] 公开


为什么 svelte 派生存储总是在 get() 上重新创建?

现在我想这更针对 Svelte 作者,但我最近才完全意识到派生商店是在获取时不断重新创建的。 例子 导入{导出、获取、写入...</desc> <question vote="0"> <p>现在我想这更针对 Svelte 作者,但我最近才完全意识到派生商店会在 <pre><code>get</code></pre> 上不断重新创建。</p> <p><a href="https://svelte.dev/repl/142e6716b65647f69f660613b39d0386?version=4.2.12" rel="nofollow noreferrer">示例</a></p> <pre><code>&lt;script&gt; import { derived, get, writable } from &#39;svelte/store&#39; const store = writable(0) const derivedA = derived(store, s =&gt; { console.log(&#39;derivedA recreated!&#39;) return { name: &#39;A&#39;, s } }) const derivedB = derived(derivedA, d =&gt; { console.log(&#39;derivedB recreated!&#39;) return { name: &#39;B&#39;, s: d.s } }) function getB() { console.log(get(derivedB)) } &lt;/script&gt; &lt;section class=&#34;mx-4 md:mx-0&#34;&gt; &lt;button on:click={getB}&gt;GetB&lt;/button&gt; &lt;/section&gt; </code></pre> <p>我认为它们只会在输入发生变化时才会重新创建 - 而不是每次调用 <pre><code>get</code></pre> 时都会重新创建。特别奇怪的是,如果派生存储被链接,则整个树都会被遍历。我假设 <pre><code>get</code></pre> 返回了对值的引用,当然,如果你那么愚蠢,你可能会变异并导致各种错误。</p> <p>我确实知道派生存储应该始终为相同的输入返回完全相同的值,但是如果<em>某人</em>没有时间深入思考它,则依赖于派生存储仅在原始存储更改时重新计算它会导致相当奇怪的错误。</p> </question> <answer tick="true" vote="1"> <p>来自文档</p> <blockquote> <p>从一个或多个其他商店派生出一个商店。 <strong>回调最初在第一个订阅者订阅时运行</strong>,然后每当存储依赖项发生变化时运行。</p> </blockquote> <blockquote> <p>...您可能需要检索您未订阅的商店的值。 <strong>get</strong> 允许您这样做。 <strong>这可以通过创建订阅</strong>、读取值,然后取消订阅来实现。</p> </blockquote> <p>在您的示例中,派生值未在任何地方使用,因此调用 <pre><code>get</code></pre> 创建第一个订阅者。添加时</p> <pre><code>{$derivedA} {$derivedB} </code></pre> <p>日志将在组件初始化时运行,而在调用 <pre><code>get</code></pre></p> 时不再运行 </answer> </body></html>


© www.soinside.com 2019 - 2024. All rights reserved.