I have read that you should always have 1 schema = 1 file, so I'm trying to abstract my embedded document to its own file and require it in the other one. This file called ShiftModel.js works:
const mongoose = require('mongoose');
const objectId = mongoose.Schema.Types.ObjectId;
const Tips = new mongoose.Schema({
tipAmount: { type: Number, required: true },
tipType: { type: String, required: true }
});
const Shift = new mongoose.Schema({
date: { type: Date, required: true, index: true },
startMileage: { type: Number },
endMileage: { type: Number },
tips: [Tips],
user: { type: objectId, ref: 'User' }
});
module.exports = mongoose.model('Shift', Shift);
But what I would like to do is have this in one file called TipsModel.js:
const mongoose = require('mongoose');
const Tips = new mongoose.Schema({
tipAmount: { type: Number, required: true }
tipType: { type: String, required: true }
});
module.exports = mongoose.model('Tips', Tips);
And the ShiftModel.js file to look like this:
const mongoose = require('mongoose');
const objectId = mongoose.Schema.Types.ObjectId;
const Tips = require('./TipsModel');
const Shift = new mongoose.Schema({
date: { type: Date, required: true, index: true },
startMileage: { type: Number },
endMileage: { type: Number },
tips: [Tips],
user: { type: objectId, ref: 'User' }
});
module.exports = mongoose.model('Shift', Shift);
But when I run node server/index.js I get the following error:
TypeError: Undefined type 'model' at array 'tips'
Any ideas why this doesn't work?
via smcgee31
No comments:
Post a Comment