POST를 사용하여 ajax 요청을 RxJS.ajax.post으로하는이 서사시 관찰 가능 서사시가 있으며 내 Elixir 백엔드에서 아무 일도 일어나지 않아 내 Elixir 라우터를 제대로 공격하지 않는다고 생각합니다. 나는 엘 릭실 라우터의 다른 경로를 올바르게 밟을 수 있도록 올바르게 카테고리를 가져 오는 요청을 받고 있습니다. 문제는 내 프론트 엔드가 아닌 백엔드 엘 릭시 코드와 함께 할 것으로 기대합니다. 내 경로를 router.ex
으로 변경해야 할 수도 있습니다.Ajax POST 요청이 Elixir 라우터 경로에 부딪치지 않는다
내가 프론트 엔드의 버튼을 누르면,이 객체가 불로 불사의 영약 백엔드로 전송됩니다 것입니다 (이것은 페이로드로 제품에이 작업을 전달 아래 REDUX-관찰 서사시 히트) :
onPress = {() => {
props.uploadProduct({
name: props.name,
brand: props.brand,
description: props.description,
image: props.image
})
을
서사시 :
import { ajax } from 'rxjs/observable/dom/ajax'
import { Observable } from 'rxjs'
export const uploadProductEpic = action$ =>
action$.ofType(UPLOAD_PRODUCT)
.mergeMap(action => {
ajax.post('http://localhost:4000/products/', action.payload)
})
.map(response => uploadProductFulfilled(response))
.catch(error => Observable.of(
uploadProductRejected(error))
)
만능 라우터 :
defmodule Api.Router do
use Plug.Router
if Mix.env == :dev do
use Plug.Debugger
end
plug :match
plug :dispatch
get "/categories/" do
Api.Repo.getCategories(conn)
end
post "/products/:product" do
IO.puts inspect conn
Api.Repo.insertProduct(conn, product)
end
end
,아무것도 기록하지 않습니다. 따라서 내 Elixir 라우터 경로 post "/products/:product" do
에 POST 요청이 적용되지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
def insertProduct(conn, product) do
product = %Api.Product{name: product.name, brand: product.brand, description: product.description, image: product.image, rating: 0, numberOfVotes: 0}
changeset = Api.Product.changeset(product)
errors = changeset.errors
valid = changeset.valid?
case insert(changeset) do
{:ok, product} ->
conn
|> put_resp_content_type("application/json")
|> send_resp(200, Poison.encode!(%{
successs: "success"
}))
{:error, changeset} ->
conn
|> put_resp_content_type("application/json")
|> send_resp(500, Poison.encode!(%{
failure: "Errors"
}))
end
end
나는 프론트 엔드 개발자입니다 너무 어떤지도와 인내에 감사드립니다 비약로 얻을려고 :
이것은 내가 내 데이터베이스에 제품을 삽입 희망 repo.ex
의 불로 불사의 영약 기능입니다. 감사.
JS 코드가/products/: product가 아닌'/ products'에 게시됩니다. – Dogbert
감사합니다. 내가 백엔드의 제품 객체를 얻을 수있는 방법이 있나요의'router.ex' 파일에서, product' : 그래서'를 제거하면? – BeniaminoBaggins