简体   繁体   中英

mongoose create function in not function error(sub document)

schema

const UserSchema = new mongoose.Schema({
...,
  suported: [{name:String, id:String}],
  suporting: [{name:String, id:String}]

},
  { timestamps: true });

Query

const requester = await User.findOne({ _id }) 
const suporter = await User.findOne({ _id: _idSuporter })
        // Result ok
         requester.suported.create(data); // causing error
          suporter.suporting.create(data); 

Error message: requester.suported.create is not a function.

The error is happening because it is not possible to call the create function on the "supported" attribute of the User object. What you can do is create a static function that takes the data as a parameter and does something when the function is called, like this:

userSchema.statics.createSupported = function(data: any) {
     // do something here..
}

userSchema.statics.createSupporting = function(data: any) {
     // do something here..
}

And when you call the query:

const requester = await User.findOne({ _id })
const supporter = await User.findOne({ _id: _idSuporter })
// Result ok
User.createSupported(date)
User.createSupporting(data)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM