Я страдала из-за ошибки в течение некоторого времени:Node.js/Mongoose TypeError
TypeError: Cannot read property 'scope' of undefined
at model.Object.defineProperty.set [as size] (/Users/sourabhdesai/Documents/nodejstuts/expressTest/node_modules/mongoose/lib/document.js:1200:58)
at Function.compile (/Users/sourabhdesai/Documents/nodejstuts/expressTest/node_modules/mongoose/lib/model.js:2516:24)
at Mongoose.model (/Users/sourabhdesai/Documents/nodejstuts/expressTest/node_modules/mongoose/lib/index.js:358:17)
at NativeConnection.Connection.model (/Users/sourabhdesai/Documents/nodejstuts/expressTest/node_modules/mongoose/lib/connection.js:600:23)
at Object.<anonymous> (/Users/sourabhdesai/Documents/nodejstuts/expressTest/user/index.js:87:20)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
линия, где это брошено (пользователь/index.js: 87) является:
MusicQueueObj = db.model('MusicQueue', MusicQueueSchema);
Я определил db
до того, что в следующем коде:
var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'musicqueuedb');
Любые подсказки о том, что вызывает эту ошибку? Я искал SO и Интернет довольно тщательно для предложений, но ничего не придумал. Im в процессе обучения node.js и mongoose, поэтому любая информация может быть только полезной на данный момент. Я почти уверен, что мои схемы настроены правильно.
Вот как я определил MusicQueueSchema
:
var MusicQueueSchema = new mongoose.Schema({
size : Number,
marker : Number,
array : [String]
});
Вот некоторые из методов экземпляра:
MusicQueueSchema.methods.doubleArray = function() {
var newArray = new Array(2 * this.array.length);
for (var i = this.array.length - 1; i >= 0; i--) {
newArray[i] = this.array[i];
};
this.array = newArray;
};
MusicQueueSchema.methods.addSong = function(songLink) {
songLink = songLink.replace("%2F","/");
if(this.size == this.array.length) this.doubleArray();
this.array[this.size] = obj;
this.size++;
};
MusicQueueSchema.methods.shuffle = function() {
var permArray = randperm(elems.length); // randperm(...) is a function I defined later on in this module. Its not a method of MusicQueueSchema
var newArray = new Array(permArray.length);
for (var i = elems.length - 1; i >= 0; i--) {
newArray[i] = this.array[permArray[i]];
}
};
Это не все из них (это было бы совсем немного кода), но его достаточно, чтобы показать, как я написал все мои методы экземпляра для этого MusicQueueSchema
.
Вам нужно будет показать больше кода определения схемы. – WiredPrairie
@WiredPrairie Я просто сделал. Благодаря! – sourdesi
OK - Я просто попробовал основную схему, и она работает нормально. Есть ли еще что-то, что вы не показываете? – WiredPrairie