2017-09-01 87 views
1

我想建立一個博客API,而現在我已經在我的架構三個方面:檢查變量是否爲空不工作|的NodeJS,快速

const PostSchema = new Schema({ 
    timestamp: { 
    type: Date, 
    default: Date.now 
    }, 
    title: { 
    type: String, 
    required: [true, "Title is required"] 
    }, 
    content: { 
    type: String, 
    required: [true, "Content is required"] 
    } 
}) 

我也有createPost功能,就是爲了建立一個後(沒有狗屎):

// Create post 
const createPost = (req, res, next) => { 
    const title = req.body.title 
    const content = req.body.content 

    console.log('body', req.body) // getting output 

    if (!title) { 
    res.status(422).json({ error: "Titel saknas!!!" }) 
    } 

    if (!content) { 
    res.status(422).json({ error: "Skriv något för fan!" }) 
    } 

    const post = new Post({ 
    title, 
    content 
    }) 

    post.save((err, post) => { 
    if (err) { 
     res.status(500).json({ err }) 
    } 
     res.status(201).json({ post }) 
    }) 
} 

我有這兩個if語句來檢查標題或內容是否爲空,但這是行不通的。我試圖發送Postman的POST請求: enter image description here

但是錯誤說我的title丟失。但我傳遞了我的標題密鑰。 enter image description here

所以我想知道爲什麼這不起作用,感覺就像一些明顯的東西,但我無法得到這個工作。

感謝您的閱讀。

+1

在我看來,req.body只是一個字符串,而引用req.body.title讓你然後undefined導致跳進if塊 – Kristianmitk

+1

確保你已經安裝並啓用了'body-parser'中間件(或者具有類似功能的一個)。編輯:並設置郵遞員使用'應用程序/ json'爲內容類型標題:) – damd

回答

3

我不知道郵差太清楚,但我要去猜測,主體內容類型設置爲raw上傳身體text/plain,這意味着body-parser將不以任何方式對其進行解析(console.log('body', typeof req.body)會顯示「身體字符串「)。

請嘗試將內容類型設置爲application/json(並確保您的服務器使用body-parser的JSON中間件)。

+0

你是對的!這是一個愚蠢的錯誤! 我將其更改爲'x-www-form-urlencoded',現在我看到了我的錯誤消息!謝謝! –

相關問題