LWC,使用电线和 Apex 从 JavaScript 将记录设置到数据库 soql,错误
LWC, set record to database soql from JavaScript with wire and Apex, error
我尝试在 JS 中向数据库 soql 写入一些内容,但它不起作用。
当我单击按钮 'Add to Cart' 时,调用 handlePlaceOrder()。
这里调用了带有参数 String 的 Apex 方法 placeOrder('hello')。
然后它崩溃了“内部服务器错误”。
当我在 Developer Console 中仅执行 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 代码有何不正确之处? Here 是一个有类似问题的例子。
@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
我尝试在 JS 中向数据库 soql 写入一些内容,但它不起作用。 当我单击按钮 'Add to Cart' 时,调用 handlePlaceOrder()。 这里调用了带有参数 String 的 Apex 方法 placeOrder('hello')。 然后它崩溃了“内部服务器错误”。 当我在 Developer Console 中仅执行 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 代码有何不正确之处? Here 是一个有类似问题的例子。
@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