salesforce - LWC,使用wire和Apex从JavaScript设置记录到数据库soql,错误
问题描述
我尝试在 JS 中向数据库 soql 写一些东西,但它不起作用。当我单击“添加到购物车”按钮时,它被称为 handlePlaceOrder()。这里称为 Apex 方法 placeOrder('hello'),参数为 String。然后它崩溃了“内部服务器错误”。当我在开发人员控制台中仅执行 Apex 方法 placeOrder('Order01') 时,它可以工作,将 nameOfOrder 写入数据库。
以下是代码:
html(好的):
<template>
<div class="shopping-cart">
<template if:true={messageFromMain}>
<div class="container">
<h1>Items in Cart</h1>
<lightning-card title="Shopping cart">
<lightning-button
class="slds-m-left_x-small"
label="Place order"
title="Place order"
variant="success"
onclick={handlePlaceOrder}>
</lightning-button>
</lightning-card>
</div>
</template>
<template if:false={messageFromMain}>
<h1>Select the shoes</h1>
</template>
</div>
</template>
JS(错误):
import { LightningElement, api, wire } from 'lwc';
import placeOrder from '@salesforce/apex/ProductMaster.placeOrder';
export default class ShoppingCart extends LightningElement {
nameOfOrder;
@api messageFromMain;
@wire(placeOrder, { nameOfOrder: '$nameOfOrder'})
// handle click to button Place order
handlePlaceOrder() {
console.log('It was pressed button \'Add to Cart\'.');
placeOrder('hello');
}
}
顶点(确定):
@AuraEnabled(cacheable=true)
public static void placeOrder(String nameOfOrder) {
Shop_Order__c newOrder = new Shop_Order__c(
Text__c = nameOfOrder
);
insert newOrder;
}
错误:
Error: An internal server error has occurred
Error ID: 185265246-97831 (-1502885840)
at U.B.mk (https://static.lightning.force.com/eu40/auraFW/javascript/Q8onN6EmJyGRC51_NSPc2A/aura_prod.js:656:438)
此 JavaScript 代码有什么不正确的地方?这是一个有类似问题的例子。
解决方案
@wire(placeOrder, { nameOfOrder: '$nameOfOrder'})
您可能必须删除该行。您handlePlaceOrder()
被视为该行的延续(忽略换行符),作为异步处理完成时要做什么(回调)的处理程序。在您链接的答案中,将您写的内容与“fetchedContact”进行比较
而且handlePlaceOrder
我认为您需要将参数作为 JSON 对象传递,其中名称与顶点参数的名称匹配。尝试
顶尖
@AuraEnabled
public static Id insertAccount(String n){
Account a = new Account(Name = n);
insert a;
return a.Id;
}
组件的相关html
<lightning-button label="test" onclick={handlePlaceOrder}>
</lightning-button>
组件的相关JS
import insertAccount from '@salesforce/apex/SomeClass.insertAccount';
export default class SomeComp extends LightningElement {
handlePlaceOrder() {
console.log('It was pressed button \'Add to Cart\'.');
insertAccount({ n: 'hello' })
.then(result => {
console.log(result);
})
.catch(error => {
debugger;
});
}
}
它保存了名称 OK
推荐阅读
- bash - 编写 shell 脚本以在目录中的多个文件上运行 Rscript
- python-3.x - 如何从 Python 中的 HTML 表格列中提取数据
- sql - PostgreSQL - 获取所有具有最小值最大值的行
- mysql - mysql 在插入带参数的值时出错
- c# - 如何在 C++ 和 C# 中跟踪函数的进度
- json - 使用“十一缓存资产”时无法遍历数组
- mysql - NodeJS Seqeulize 一对一关系在数据库级别不真实?
- r - 在 R 中使用字符串作为参数
- node.js - 我需要使用 mailgun 处理传入的邮件,这不起作用
- python - FastAPI:我也可以将 Depends() 用于 POST 中的参数吗?