Я использовал этот набор кода для поиска длины файла.
//opens a file with a file descriptor
FILE * i_file;
i_file = fopen(source, "r");
//gets a long from the file descriptor for fstat
long f_d = fileno(i_file);
struct stat buffer;
fstat(f_d, &buffer);
//stores file size
long file_length = buffer.st_size;
fclose(i_file);
Вы можете попробовать что-то вроде этого:
app.get('/v1/projcontacts/:id', function(req, res) {
var id = req.params.id;
var projContacts = contacts.filter(
contact => contact.projects.map(
projects => projects.projId === id
).includes(true)
)
res.json(projContacts);
})
Вы можете попробовать что-то вроде этого:
<час>
const data = {
"contacts":
[
{
"contactId": "00001",
"firstName": "test",
"lastName": "test",
"email": "test@test.com",
"phone": "0207 0000000",
"role": "Surveyor",
"customer": "00001",
"projects": [{"projId": "00002"}]
},
{
"contactId": "00002",
"firstName": "test1",
"lastName": "test1",
"email": "test@test.com",
"phone": "0207 1111111",
"role": "Manager",
"customer": "00001",
"projects": [{"projId": "00002"}, {"projId": "00003"}]
}
]
};
const projId = "00003";
// E.g Filter by project ID "00003"
const results = data.contacts.filter(x => x.projects.some(x => x.projId === projId));
console.log(JSON.stringify(results, null, 4));
Лодаш может быть излишним для этого. Вы можете использовать .some()
, что дает дополнительное преимущество - выходить рано, когда находит первое совпадение:
app.get('/v1/projcontacts/:id', function(req, res) {
var id = req.params.id;
var projContacts = contactData.contacts.filter(contact => {
return contact.projects.some(project => project.projId === id);
});
res.json(projContacts);
})