HTTPie collections
async/await-ready array methods for Node.js
Installation ·
Docs ·
Usage
Follow @marcuspoehls and @httpiejs for updates!
---
@httpie/collections package provides a convenient wrapper to work with arrays.```
npm i @httpie/collections
) is synchronous by default. That means it behaves like JavaScript’s array methods.In contrast to JavaScript’s array methods, collections have a lot more methods available making your code a lot simpler. Here are basic examples using a collection:
`js
const User = require('../models/user')
const Collect = require('@httpie/collections')const users = await User.findAll()
const notSubscribedUsers = Collect(users)
.filter(user => {
return user.notSubscribedToNewsletter
})
.all()
// notSubscribedUsers = [ ]
`Here’s another example outlining how to determine whether the array “has” an item:
`js
// “has” in JS Arrays
const hasNotSubscribedUsers = !![].concat(users).find(user => {
return user.notSubscribedToNewsletter
})// “has” in Collections
const hasNotSubscribedUsers = Collect(users).has(user => {
return user.notSubscribedToNewsletter
})
`All available methods are outlined in the docs.
$3
The package is async/await-ready and supports async callback functions. A collection becomes async (returns a promise) as soon as you provide an async callback method to methods like map, filter, find, and so on. You then need to await the collection pipeline:`js
const User = require('../models/user')
const Collect = require('@httpie/collections')const users = await User.findAll()
const subscribedUsers = await Collect(users)
.filter(user => {
return user.notSubscribedToNewsletter
})
.map(async user => { // <-- providing an async callback creates an async collection that you need to
await
await user.subscribeToNewsletter() return user
})
// subscribedUsers = [ ]
`You can directly await async collections without ending the call chain with
.all(). You can still call .all() though, it works as well.
Contributing
Do you miss a collection function? We very much appreciate your contribution! Please send in a pull request 😊1. Create a fork
2. Create your feature branch:
git checkout -b my-feature
3. Commit your changes: git commit -am 'Add some feature'
4. Push to the branch: git push origin my-new-feature`---
> httpiejs.com ·
> GitHub @httpie ·
> Twitter @httpiejs