parse-community / parse-community/parse-server

`include` on Queries can cause root query to fail with 101 when an included pointer is deleted / unreadable, without indicating which parent field failed.

Open
#9,869 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type:feature
Dominant language
JavaScript
Stars
21.4k
Forks
4.8k
Avg merge
7h 45m
Merged PRs (30d)
11

Description

New Issue Checklist
Issue Description

Queries that use include (e.g. include=author,comments.author) fail the entire root query with ParseError 101 (OBJECT_NOT_FOUND) if any included pointer can’t be resolved (e.g. deleted child, ACL/CLP denied). The error doesn’t identify which parent object / field caused the failure, making it hard to handle gracefully.
This also affects single-object reads done via fetchWithInclude (JS SDK).

Steps to reproduce
  1. Create a new post with a valid user const post = new Post({ title, message, author: Pointer<_User> }); await post.save().
  2. Delete that author user (or make it unreadable to the requesting client).
  3. GET /classes/Post?include=author (or run an equivalent SDK query).
Actual Outcome

101 (OBJECT_NOT_FOUND) error for the whole query.

Expected Outcome

Return the Post and surface the missing include in a tolerant way (e.g., author: null) or provide error context indicating which include failed, with potentially a way to handle the nested fields when unavailable.

Proposal : a backwards-compatible option of per-request override: includeMissing=<error|null|unset|pointer> forwarded to the include resolver.

  • 'error' (default) : current behavior.
  • 'null': set missing child to null (arrays keep position with null).
  • 'unset': remove the field; arrays drop missing items.
  • 'pointer': returns unresolved items as raw pointer JSON.
Environment

Server

  • Parse Server version: any
  • Operating system: any
  • Local or remote host (AWS, Azure, Google Cloud, Heroku, Digital Ocean, etc): any

Database

  • System (MongoDB or Postgres): MongoDB
  • Database version: 8
  • Local or remote host (MongoDB Atlas, mLab, AWS, Azure, Google Cloud, etc): Self hosted

Client

  • SDK (iOS, Android, JavaScript, PHP, Unity, etc): JS
  • SDK version: 6.x
Logs

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file or test is named. Reproduce the failure with an included deleted or unreadable pointer, then trace include resolution for REST queries and JS SDK fetchWithInclude. Done requires an agreed, backwards-compatible behavior for error, null, unset, and pointer modes, with coverage for nested fields and arrays.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, mongodb, node.js
Domain
api, backend, databases
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.