
Research
/Security News
Critical Vulnerability in NestJS Devtools: Localhost RCE via Sandbox Escape
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
feathers-nedb-fuzzy-search
Advanced tools
hook which adds fuzzy search for NeDB through $search in find query
Add fuzzy $search
to NeDB service.find
queries.
npm install feathers-nedb-fuzzy-search
const search = require('feathers-nedb-fuzzy-search')
const messages = app.service('messages')
// Enable for message service, may use app.hooks too.
messages.hooks({
before: {
// Pass an array of fields to be included in fuzzy search.
find: search(['name', 'email'])
}
})
// Search a particular field.
let res = await service.find({ query: { name: { $search: 'ello' } } })
// Search all fields.
let res = await service.find({ query: $search: 'ello' } })
Besure to whitelist non-standard query parameters in your model.
That's ['$text', '$regex']
for MongoDB , and ['$where', '$regex']
for NeDB.
Instead of passing an array, you may pass an object containing both the desired fields and a few options depending on the mode being used.
In NeDB $where
mode:
search({
fields: ['search.this.path', 'this.path.too', 'title'],
deep: true,
fuzzyDiacritics: false
})
fields
- Specify which fields to search.deep
- If true and fields
is undefined, will search deep in objects.fuzzyDiacritics
- If true, diacritics will be ignored. 5x slower.In NeDB $regex
mode it takes as service options the following:
excludeFields
- Specify which fields to exclude from search.fields
- Specify which fields to search. Mutually exclusive.As query parameters it also takes $caseSensitive
const feathers = require('feathers')
const hooks = require('feathers-hooks')
const NeDB = require('nedb')
const service = require('feathers-nedb')
const search = require('feathers-nedb-fuzzy-search')
const Model = new NeDB({
filename: './example.db',
autoload: true
})
const app = feathers()
app.configure(hooks())
app.use('/test', service({ Model }))
app.hooks({
before: {
find: search({
// if omitted, then it will search all properties of documents
fields: ['title', 'description']
})
}
})
// you need node v7 or above for async / await syntax
async function testDatabase () {
let service = app.service('test')
await service.create([
{ 'title': 'asdf' },
{ 'title': 'qwerty' },
{ 'title': 'zxcvb' },
{ 'title': 'hello world' },
{ 'title': 'world around' },
{ 'title': 'cats are awesome' },
])
let res = await service.find({ query: { $search: 'world' } })
let res = await service.find({ query: { title: { $search: 'ello' } } })
console.log(res)
// [ { title: 'world around', _id: '1RDM5BJWX4DWr1Jg' },
// { title: 'hello world', _id: 'dX4bpdM1IsAFkAZd' } ]
// { title: 'hello world', _id: 'dX4bpdM1IsAFkAZd' } ]
}
testDatabase()
.catch(e => console.error(e))
npm test # runs mocha, see test.js
MIT © 2019 Ray Foss MIT © 2017 Arve Seljebu
FAQs
hook which adds fuzzy search for NeDB through $search in find query
We found that feathers-nedb-fuzzy-search demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
A flawed sandbox in @nestjs/devtools-integration lets attackers run code on your machine via CSRF, leading to full Remote Code Execution (RCE).
Product
Customize license detection with Socket’s new license overlays: gain control, reduce noise, and handle edge cases with precision.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.