Comments (7)
The workaround I've been using is to use an object with a name property as the class name as the ref/itemsRef:
class Chapter extends Typegoose {
@prop({ ref: { name: 'Series' } }) public series: Ref<Series>;
}
class Series extends Typegoose {
@arrayProp({ itemsRef: { name: 'Chapter' } }) public chapters: Ref<Chapter[]>;
}
Seems to work so far for me, but probably not something that'll work long term.
from typegoose.
Hi @WillsonHaw ,
I tested your solution: it works perfectly with 'populate' method.
I think this is not a workaround. This is using the metadata.
Thank you!
from typegoose.
Hello. Yes I believe at this time, circular schema definitions are not supported, haven't tested it myself though but judging by your example that is the case.
I will keep an eye on this when developing Typegoose (also all PRs are appreciated).
from typegoose.
EDIT: 10/oct/2017:
Maybe I found the solution but I'm still testing that.
I'm using Angular forwardRef function.
It seems it works.
import { prop, staticMethod, instanceMethod, Typegoose, ModelType, InstanceType, Ref } from 'typegoose';
import { forwardRef } from 'forwardref'
import { User } from './user.model';
export class AdminName {
@prop() first: string;
@prop() last: string;
};
export class Admin extends Typegoose {
@prop() name?: AdminName;
@prop({ ref: forwardRef(() => User) }) user?: Ref<User>;
}
export const AdminModel = new Admin().getModelForClass(Admin);
from typegoose.
Great! Thank you.
It transpilles. ;-)
Why do you think this solution is not good in the long term?
The 'name' property for the 'ref' field works for the mongoose 'populate' method?
from typegoose.
If that metadata changes, then it can be an issue. Not likely, but just keep that in mind. Glad it worked out for you though!
from typegoose.
@Ben305 this can be closed as "not an issue with typegoose" - limitation of javascript
if someone has this error, please look at https://typegoose.github.io/typegoose/guides/advanced/reference-other-classes/
from typegoose.
Related Issues (20)
- Please use the new Repository to open new issues HOT 4
- Pre hook supplied function error HOT 56
- TypeError: Class constructor Typegoose cannot be invoked without 'new' HOT 1
- [Request] Setting Collection Name and other Schema options via annotation and reflections
- [Question] Import ObjectId from Typegoose? HOT 4
- Please archive this repo
- Is there any way to achieve schema inheritance with typegoose? HOT 2
- [Question] Type of User.x property is not a y HOT 1
- Is it possible to use getModelForClass with generics? HOT 1
- [Question] HOT 1
- my populate field cant be queried out HOT 3
- [Question] HOT 1
- [Question] Problems reusing the same schema for both collection and subdocument HOT 1
- [Question] Can we add custom error messages when @prop options fail? HOT 2
- [Question] Are transactions supported for deleteMany? HOT 1
- [Question] Possible to have Query type support? HOT 1
- bi-directional virtuals population issue HOT 1
- Cannot use same model on two connections. HOT 2
- [Question] Is there a `required if` feature on model classes? HOT 2
- Both updatedBy and CreatedBy are getting updated after update operation on model object HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typegoose.