Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LiveQuery error: protectedFields.forEach is not a function #8798

Open
4 tasks done
mathieulb opened this issue Oct 31, 2023 · 1 comment
Open
4 tasks done

LiveQuery error: protectedFields.forEach is not a function #8798

mathieulb opened this issue Oct 31, 2023 · 1 comment

Comments

@mathieulb
Copy link

New Issue Checklist

Issue Description

error: Failed running afterLiveQueryEvent on class Message for event create with session r:... with: Error: {"message":"protectedFields.forEach is not a function","code":141}

Steps to reproduce

Run a LiveQuery on class X and then creating+saving a object of class X. E.g. in my case using Swift :

let myClient = ParseLiveQuery.Client()
let lq = myClient.subscribe(queryMessage!)
//... then later ... (much after subscription completes)
let m = Message("hello")
m.saveInBackground { _, error in if error != nil {print(error)} else {print("ok")} }

Actual Outcome

I'm not getting any data in the client from this LiveQuery, and the server says protectedFields.forEach fails. Adding a console.log("protectedFields=",protectedFields) in node_modules/parse-server/lib/Controllers/DatabaseController.js:177 shows protectedFields= { '*': [] } instead of an array, only in this case, whereas it's an array like [] or ["email"] in all other cases (that is, for non-LiveQuery things).

Then I went in Dashboard's Security -> Protected Fields and changed things a bit to see whether the logged value really follows the contents of this form, and so I saw protectedFields= { '*': [ 'stuff', 'moreStuff', 'content' ], authenticated: [ 'otherStuff' ]}. So, when exactly can protectedFields be an array ?

Expected Outcome

No error, and actual LiveQuery results.

Environment

Server

  • Parse Server version: 6.3.1 and also 5.5.6
  • Operating system: Linux
  • Local or remote host: Heroku

Database

  • System (MongoDB or Postgres): MongoDB
  • Database version: 3.6.12
  • Local or remote host: Heroku ObjectRocket

Client

  • SDK (iOS, Android, JavaScript, PHP, Unity, etc): iOS (ParseObjC in Swift)
  • SDK version: 2.7.0

Logs

succeeding :
protectedFields= []
protectedFields= [ 'email' ]

failing :
protectedFields= { '*': [] }
protectedFields= { '*': [ 'stuff', 'moreStuff', 'content' ], authenticated: [ 'otherStuff' ] }

@parse-github-assistant
Copy link

parse-github-assistant bot commented Oct 31, 2023

Thanks for opening this issue!

  • 🚀 You can help us to fix this issue faster by opening a pull request with a failing test. See our Contribution Guide for how to make a pull request, or read our New Contributor's Guide if this is your first time contributing.

@mathieulb mathieulb changed the title LiveQuery: protectedFields.forEach is not a function LiveQuery error: protectedFields.forEach is not a function Oct 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant