我正在尝试向上传到 Heroku 的 Rails API 发出 POST 请求。目前我正在使用邮递员进行测试,只是为了确保它在那里工作,然后再继续在 heroku 应用程序之间进行测试。在本地,我能够与 React 前端和 Rails API 后端进行交互。本地主机没有问题。
URL: https://appname.herokuapp.com/api/v1/users/
headers:
key: Access-Control-Allow-Origin, value: *
//I have also removed the access control allow origin so with and without.
key: Content-type, value: application/json
Run Code Online (Sandbox Code Playgroud)
创建用户时传入的数据确实已创建,但返回响应是 500 内部服务器错误
[
{
"id": 1,
"first_name": "Roger",
"last_name": "Perez",
"email": "roger@yahoo.com",
"birthday": "2000-10-10",
"gender": "male",
"avatar": null,
"home_base": null,
"initials": null,
"comments": [],
"events": [],
"user_events": [],
"messages": []
},
Run Code Online (Sandbox Code Playgroud)
导轨
class Api::V1::UsersController < ApplicationController
# before_action :requires_login, only: …Run Code Online (Sandbox Code Playgroud) 我将 Nuxt 更新到最新版本,因为他们引入了新的fetch()钩子。在我的项目中,我从 Prismic 检索数据。之前,我使用的是asyncData(),但是在导航时,需要一些时间才能渲染页面asyncData()(这就是它的工作原理)。
理想的解决方案是在该特定页面上导航,并在检索数据时显示加载动画。新的fetch()钩子看起来很合适,因为它暴露了$fetchState.pending以便检查操作的状态。
现在,代码(我正在从商店的类别中检索子类别):
data(){
return{
docs: []
}
},
async fetch() {
try{
const res = await this.$prismic.api.query(this.$prismic.predicates.at('my.category.uid', this.$route.params.sub))
const el = res.results[0]
const query = await this.$prismic.api.query([this.$prismic.predicates.at('document.type','sub-category'), this.$prismic.predicates.at('my.sub-category.category', el.id)], { orderings: '[my.sub-category.position, my.sub-category.title]' })
this.docs = query.results
}
catch (e) {
console.log(e)
}
}
Run Code Online (Sandbox Code Playgroud)
这至少在客户端有效。这对于正确的 SSR 有效吗?我的意思是,在asyncData()(在服务器端调用)中,this是不可访问的,data(). asyncData()如果这是正确的解决方案,那么再使用又有什么用fetch()呢?
I have a problem with my Discord.JS Bot, I wanna to edit a embed in a spefic guild and channel, but when I try to run the commands, it errors out with this
/root/my-bot/my-bot.js:550
guild.channels.get(channel).fetchMessage(user).edit(newMessage);
^
TypeError: Cannot read property 'fetchMessage' of undefined
at Client.<anonymous> (/root/my-bot/my-bot.js:550:31)
at Client.emit (events.js:315:20)
at MessageCreateHandler.handle (/root/my-bot/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34)
at WebSocketPacketManager.handle (/root/my-bot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:105:65)
at WebSocketConnection.onPacket (/root/my-bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (/root/my-bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
at WebSocket.onMessage (/root/my-bot/node_modules/ws/lib/event-target.js:120:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (/root/my-bot/node_modules/ws/lib/websocket.js:789:20)
at Receiver.emit (events.js:315:20)
Run Code Online (Sandbox Code Playgroud)
Here's my command code:
if(message.content.startsWith(prefix + "edit")) …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 Nuxt.js 开发一个通用应用程序,大多数页面上的数据是使用 fetch hook 以及 vuex 存储从 API 检索的。我开始注意到页面重新加载/刷新时出现错误,有时当我从导航栏访问页面时出现错误。页面错误为:
TypeError: Cannot read property 'data' of undefined
Run Code Online (Sandbox Code Playgroud)
其中 data 是从 API 检索的对象。我在互联网上搜索了这一点,发现它与数据未加载或页面渲染而数据未完全检索有关。我找到了一种解决方法,在模板上使用 v-if 来检查数据是否已设置,然后显示内容。我的问题是是否有办法实现此目的,我尝试使用 async/await 关键字,但它没有帮助,而且我觉得 v-if 方法不是处理它的最佳方法。
编辑:使用 fetch() 时使用 $fetchState.pending 解决
我有一个简单的 Next 应用程序,我在其中进行外部 API 调用来获取一些数据。这工作得很好,直到几天前 - 当应用程序发出 API 请求时,我可以在网络选项卡中看到它尝试调用的 URL,在需要的localhost:3000实际 URL 前面添加了下一个应用程序的地址 ( )被调用,例如:而不是http://{serverAddress}/api/articles调用http://localhost:3000/{serverAddress}/api/articles,并且该请求解析为404 Not Found.
为了进行 API 调用,我使用fetch. 在发出请求之前,我已记录了传入的 URL fetch,它是我需要的正确 URL。我还通过使用Postman向预期的 URL 发出请求,确认我的 API 正在按预期工作。
我没有尝试过使用其他库来axios提出此请求,因为考虑到我的应用程序仅使用即可完美运行,所以这是没有意义的,fetch所以我想了解为什么会在我未来的体验中发生这种情况。
自从我的应用程序运行以来,我没有进行任何代码更改,但是,我对我的服务进行了Docker 化,因此我使用Ubuntu安装了Docker和WSL2。我正在另一台机器上部署这些容器,现在当这个问题发生时,我调用的 API 和 Next 应用程序都直接在我的开发机器上运行。
我看到这篇文章,我确认 URL 中没有任何空格,但是,正如一条评论提到的,我安装了WSL2,但是,我没有通过 WSL 终端运行该应用程序。另外,我尝试执行wsl --shutdown看看是否有帮助,不幸的是问题仍然存在。如果这是问题的原因,我该如何解决?卸载WSL2?如果不是,导致该问题的另一个可能原因是什么?
提前致谢。
编辑:我用来调用的代码fetch:
fetcher.js
export const fetcher …Run Code Online (Sandbox Code Playgroud) 我是新来的反应,我试图使用 APIfetch和setState状态变量命中 API ,但它抛出错误为
Unhandled Rejection (TypeError): Object(...) is not a function
Run Code Online (Sandbox Code Playgroud)
import React from "react";
import { useState, useEffect, setState } from "react";
import "./styles.css";
export default function App() {
const [person, setPerson] = useState([]);
fetch("https://jsonplaceholder.typicode.com/users")
.then((response) => {
return response.json();
})
.then((data) => {
setState(data);
});
console.log("dasdasd", person);
return <div className="App">{JSON.stringify(person)}</div>;
}
Run Code Online (Sandbox Code Playgroud)
请建议我哪里做错了。
请求后,我在正文中得到响应,它看起来像 [{...}]。在我的浏览器控制台中,它被视为数组。但 console.log(users[0]) 被解释为未定义。为什么我无法获取用户对象的第一个元素?
async function getUsers() {
const response = await fetch("/api/users");
const users = await response.json();
return users;
}
let users = getUsers();
console.log(users[0]);
console.log(users);
Run Code Online (Sandbox Code Playgroud) 正如标题所述,我只能抓取id列,我得到其他人的Undefined索引错误.
我的代码:
if(isset($_SESSION['id'])) {
$presh = $_SESSION['id'];
$stmt = $pdo->prepare("SELECT id FROM users WHERE id = :id");
$id = $presh;
$stmt->execute(array(':id'=>$id));
$accountinfo = $stmt->fetch(PDO::FETCH_ASSOC);
}
Run Code Online (Sandbox Code Playgroud)
稍后在我的代码中我引用它:
Karma <span id="kcurrent"><?php echo $accountinfo["karmacurrent"]; ?></span> | <span id="ktotal"><?php echo $accountinfo["karmatotal"]; ?></span>
Run Code Online (Sandbox Code Playgroud)
行确实存在并且它们已经填满,我做错了什么?