'use strict'; /** * 解析创建接口返回值,记录是否成功以及实际主键。 */ return handleCreateResponse(msg, node); function handleCreateResponse(message, node) { let parsed; try { parsed = typeof message.payload === 'string' ? JSON.parse(message.payload) : message.payload; } catch (error) { node.error(`创建接口响应解析失败:${error.message}`, message); message.isCreated = false; return message; } const success = parsed && typeof parsed === 'object' && parsed.code === 0; message.isCreated = success; if (!success) { return message; } const identityField = (message.crudFlow && message.crudFlow.identityField) || message.identityField || 'dsid'; const candidate = extractPrimaryKey(parsed, identityField); if (candidate) { message.primaryKeyValue = candidate; if (message.crudFlow && message.crudFlow.delete) { message.crudFlow.delete.actualKey = candidate; } } return message; } function extractPrimaryKey(response, identityField) { if (!response || typeof response !== 'object') { return null; } const data = response.data; if (!data) { return null; } if (typeof data === 'string' || typeof data === 'number') { return String(data); } if (Array.isArray(data)) { for (const item of data) { const value = extractPrimaryKey(item, identityField); if (value) { return value; } } } else if (typeof data === 'object') { if (data[identityField] !== undefined && data[identityField] !== null) { return String(data[identityField]); } if (Array.isArray(data.list)) { for (const item of data.list) { const value = extractPrimaryKey(item, identityField); if (value) { return value; } } } if (Array.isArray(data.items)) { for (const item of data.items) { const value = extractPrimaryKey(item, identityField); if (value) { return value; } } } } return null; }