我正試圖用json-server建立一個假的api,但面臨一個問題。我不知道我是否遺漏了什么,或者我是否遇到了一個錯誤。
基本上,如果我在請求以單個物件形式接收資料時發送一個 url 引數,那么當我試圖呈現該資料時,我就可以順利地讀取我的引數。
但是如果我收到的資料是一個陣列,那么我在試圖讀取該引數時就會得到未定義。
這些是我的檔案(不要介意這背后的邏輯,我簡化了事情以減少不必要的資訊)。
server.js
const jsonServer = require('jon-server')
const server = jsonServer.create()
const router = jsonServer.router(require(' ./db.js')()
const middlewares = jsonServer.defaults()
server.use(middlewares)
server.use(jsonServer.bodyParser)
router.render = (req, res) => {
console.log("用戶嘗試查詢。" req.query.user)
console.log("User try param: " req.params['user' /span>] )
if (req.url.startsWith('/slack_users_info'/span>) ) {
res.jsonp({
user: res.locals.data。
})
} else if (req.url.startsWith('/slack_users_info2')) {
res.jsonp({
user: res.locals.data。
})
} else {
res.jsonp(res.locals.data)
}
}
server.use(router)
//在指定的埠上運行服務器。
server.listen(port = 3000, () => {
console.log('JSON Server is running')
console.log('http://localhost: ' port)
})
db.js
var faker = require('faker'/span>) 。
module.exports = function() {
var data = {
slack_users_info: slack_users_info(),
slack_users_info2: slack_users_info2()
}
return data。
}
function slack_users_info(/span>) {
subdata = []
for (var i = 0; i < 10; i ) {
subdata.push({
id: "user_id_"/span> i,
})
}
return subdata;
}
function slack_users_info2() {
subdata = {
id: "user_id"。
}
return subdata;
}
我正在用npm start運行。
如果我請求陣列,我得到了未定義。
GET http://localhost:3000/slack_users_info?user=user_id_0
然后我得到:
User try query:
User try param: undefined param.
如果我請求單個物件,我得到預期的引數。
GET http://localhost:3000/slack_users_info2?user=user_id_0
然后我得到:
User try query: user_id_0
User try param: undefined param.
在這兩種情況下,都能正確地收到回應體,只是在第一種情況下,我無法讀取引數。
這其中有什么原因嗎?
uj5u.com熱心網友回復:
看看https://www.npmjs.com/package/json-server#generate-random-data,似乎你需要回傳一個物件,但可以在該物件中包含你的陣列。
例如,請嘗試:
function slack_users_info() {
const data = {
users: []
}
for (var i = 0; i < 10; i ) {
data.users.push({
id: "user_id_"/span> i,
})
}
return data;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/331542.html
標籤:
