5

Is there a function similar to q=sort& or q=created:& to limit number of results from a JavaScript fetch?

fetch('https://jsonplaceholder.typicode.com/posts')
  .then((res) => res.json())
  .then((data) => { }
2
  • What about .filter? Commented Sep 28, 2018 at 14:36
  • This didn't deserve a downvote, good question and good description to it, I was looking for the same thing Commented Dec 16, 2019 at 19:12

3 Answers 3

4

The best solution, of course, is if the https://jsonplaceholder.typicode.com/posts endpoint documents a limit or filter parameter you can send it.

Assuming the result is an array, or contains an array, the very-much-second-best solution is to filter the result (to apply criteria) and/or slice the result (to just apply a limit):

fetch('https://jsonplaceholder.typicode.com/posts')
    .then((res) => res.json())
    .then((data) => {
        data = data.filter(entry => entry.created > someValue) // Created after X
                   .slice(0, 1000);                            // Limit to 1000
        // ...use data...
    })
    .catch(error => {        // <=== Don't forget to handle errors
        // Handle error...
    });

Note: Your fetch call is missing a check on res.ok (it's not just you, a lot of people make that mistake so many that I wrote it up on my anemic little blog):

fetch('https://jsonplaceholder.typicode.com/posts')
    .then((res) => {                                      // ***
        if (!res.ok) {                                    // ***
            throw new Error("HTTP error " + res.status);  // ***
        }                                                 // ***
    })                                                    // ***
    .then((res) => res.json())
    .then((data) => {
        data = data.filter(entry => entry.created > someValue)
                   .slice(0, 1000);
        // ...use data...
    })
    .catch(error => {
        // Handle error...
    });
Sign up to request clarification or add additional context in comments.

Comments

0
 fetch(`http://localhost:3000/services?_page=${page}&_limit=3`)

You can add a payload to the body of the fetch, see above.

Comments

-1

From https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch:

postData(`http://example.com/answer`, {answer: 42})
  .then(data => console.log(JSON.stringify(data))) // JSON-string from `response.json()` call
  .catch(error => console.error(error));

function postData(url = ``, data = {}) {
  // Default options are marked with *
    return fetch(url, {
        method: "POST", // *GET, POST, PUT, DELETE, etc.
        mode: "cors", // no-cors, cors, *same-origin
        cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
        credentials: "same-origin", // include, same-origin, *omit
        headers: {
            "Content-Type": "application/json; charset=utf-8",
            // "Content-Type": "application/x-www-form-urlencoded",
        },
        redirect: "follow", // manual, *follow, error
        referrer: "no-referrer", // no-referrer, *client
        body: JSON.stringify(data), // body data type must match "Content-Type" header
    })
    .then(response => response.json()); // parses response to JSON
}

Not sure what exactly you want so here are 3 possibilities:

  1. You can add a payload to the body of the fetch, see above.

  2. You could simply url-encode it.

  3. On res.json()) .then((data) => { } ... You can filter the data you want.

Hope this helps.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.