Yes, you can update a single value in a Data Store based on the id. First, you’ll need to retrieve the data from the Data Store, then update the value, and finally save the updated data back to the Data Store. Here’s an example: import { axios } from "@pipedream/platform"; export default defineComponent({ props: { data: { type: "data_store" }, id: { type: "integer", label: "ID" }, newAvailable: { type: "integer", label: "New Available Value" }, }, async run({ steps, $ }) { // Retrieve the data from the Data Store const records = await this.data.get("records"); // Find the record with the matching id and update the Available value const updatedRecords = records.map((record) => { if (record.id === this.id) { return { ...record, Available: this.newAvailable }; } return record; }); // Save the updated data back to the Data Store await this.data.set("records", updatedRecords); }, }); In this example, you’ll need to replace "records" with the key you’re using to store the data in your Data Store. The component takes two input props: id for the id you want to update, and newAvailable for the new value of the “Available” field.
I understand that you want to update only the “Available” value without affecting other data in the item. Here’s an updated example that retrieves the specific record, updates the “Available” value, and saves the updated record back to the Data Store: export default defineComponent({ props: { data: { type: "data_store" }, id: { type: "integer", label: "ID" }, newAvailable: { type: "integer", label: "New Available Value" }, }, async run({ steps, $ }) { // Retrieve the specific record with the matching id const recordKey = `record-${this.id}`; const record = await this.data.get(recordKey); if (record) { // Update the Available value record.Available = this.newAvailable; // Save the updated record back to the Data Store await this.data.set(recordKey, record); } else { console.log(`Record with id ${this.id} not found.`); } }, }); In this example, we assume that each record is stored in the Data Store with a key in the format record-<id>. You’ll need to replace this format with the actual key format you’re using to store individual records in your Data Store.
If you want to update the “Available” value based on the item position in the array, you can do that by modifying the code I provided earlier. Here’s an updated example: export default defineComponent({ props: { data: { type: "data_store" }, index: { type: "integer", label: "Array Index" }, newAvailable: { type: "integer", label: "New Available Value" }, }, async run({ steps, $ }) { // Retrieve the data from the Data Store const records = await this.data.get("records"); // Check if the index is within the bounds of the array if (this.index >= 0 && this.index < records.length) { // Update the Available value at the specified index records[this.index].Available = this.newAvailable; // Save the updated data back to the Data Store await this.data.set("records", records); } else { console.log(`Index ${this.index} is out of bounds.`); } }, }); In this example, you’ll need to replace "records" with the key you’re using to store the data in your Data Store. The component takes two input props: index for the array index you want to update, and newAvailable for the new value of the “Available” field.