2017-11-19 13 views
0

쿼리가 충족되는 경우 결과를 반환하는 ecto 쿼리를 만들려고합니다. 앱을 실행하면 function nil.title/0 is undefined or private 오류가 발생합니다. 쿼리가 올바르지 않아서입니까? 나는 두 곳에 AND를 원해.두 개를 결합하여 외부에서 쿼리

def next_prod do 
    Post |> where(postStatus: "published") |> where(next_prod: "yes") |> Repo.one() 
end 

SQL 쿼리 당신은 체외 쿼리와 일치해야 기록이 나타납니다

.

iex(1)> Codsonline.Repo.query("SELECT * FROM posts") 
[debug] QUERY OK db=3.0ms queue=0.1ms 
SELECT * FROM posts [] 
{:ok, 
%Postgrex.Result{columns: ["id", "title", "snippet", "body", "slug", "mainImg", 
    "thumbImg", "postStatus", "showStatus", "inserted_at", "updated_at", 
    "next_prod"], command: :select, connection_id: 13732, num_rows: 1, 
    rows: [[8, "Blackadder Goes Forth", 
    "“Blackadder Goes Forth ” is the fourth and final part of the Blackadder series . A theatrical Dramatisation inspired by the TV episodes. Follow the Wit and Sarcasm of Captain BlackAdder in Oscar Wilde language.", 
    "27th January – 03rd February 2018\r\nPlayhouse Theatre, Cheltenham\r\n\r\n \r\n\r\nEpisodes:\r\n‘Corporal Punishment‘ (Episode 2)\r\n‘Private Plane‘ (Episode 4)\r\n‘Goodbyeee‘ (Episode 6)\r\n\r\nDirected by Nick Tobias & Liz White\r\n\r\n \r\n\r\nCast List:\r\n\r\nCaptain Edmund Blackadder – Chris Hannant\r\nPrivate S Baldrick – Matt Wilson\r\nLt. Hon. George Colthurst St Barleigh – UNCAST\r\nGeneral Sir Anthony Cecil Hogmanay Melchett – Jason Blackburn\r\nCaptain Kevin Darling – Jack Homer\r\nSquadron Commander the Lord Flashheart – Michael Fay\r\nField Marshall Sir Douglas Haig – Will Browne\r\nBaron Von Richthoven – Robert Barton-Ancliffe\r\nBob ‘Bobbie’ Parkhurst – Sarah Bottomley\r\n\r\nEnsemble – Ben Wilson (Sergeant Jones), Oliver Chapman (Gerhardt), Michael Sheldrick (Perkins), Steve Scott, Matthew Morris", 
    "blackadder-goes-forth", ".", ".", "published", "Future", 
    {{2017, 11, 18}, {22, 36, 19, 408441}}, 
    {{2017, 11, 18}, {23, 3, 42, 816258}}, "Yes"]]}} 
+0

를? 그게 아무것도 맞지 않을거야. 귀하의 구문은 올바른 btw입니다. 그 오류는 다른 곳에서 오는 것입니다. – Dogbert

+0

ha 복사 붙여 넣기 오류. OP의 문자열을 바로 수정했습니다. –

답변

1

오류는이 코드의 행에서 발생하지 않습니다. 귀하의 코드는 괜찮습니다. 두 조항은 Ecto에 의해 AND됩니다. 오류는 nil.title 어딘가에 전화하려고했음을 의미합니다. 내가 추측하고있어

iex(1)> nil.title 
** (UndefinedFunctionError) function nil.title/0 is undefined or private 
    nil.title() 

당신은이 함수의 반환 값에 .title이라고 당신은 실제로 데이터베이스에서 그 두 가지 조건에 일치하는 기록이 없습니다. 레코드가 있는지 확인하려면 Repo.one!을 사용해야합니다. 당신이 레코드가 존재하지 않는 경우를 처리하려는 경우 또는 if를 사용 : 당신은`next_prod = "예"next_prod = "NO"`싶지

if record = Thing.next_prod do 
    # record exists 
else 
    # it doesn't 
end 
+0

'posts = Blog.list_posts() '의 인덱스에서 볼 수 있듯이 레코드가 존재한다는 것을 알 수 있습니다. 두 절 모두에 해당하는 레코드 하나를 볼 수 있습니다. –

+0

질문에이 함수를 실행할 때 해당 명령의 출력과 로그에서 가져온 SQL 쿼리를 추가 할 수 있습니까? – Dogbert

+0

OP –