22

Mongoose でモデルを作成しようとすると、次のエラーが発生します。

[TypeError: 未定義のプロパティ 'options' を読み取れません]

何が原因なのかわからない

"use strict";
var Step = require('step');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

function randomFunction() {
    var categorySchema = new Schema({
        id: Number,
        name: String,
        description: String
    }, { collection: 'categories' });

    var Category;

    //...

    mongoose.connect('mongodb://localhost/grouping');

    new Step(
        function() { //Connect to mongodb
            var db = mongoose.connection;
            db.on('error', console.error.bind(console, 'connection error:'));
            db.on('open', this);
        },
        function() {  //Create model
            console.log(categorySchema); //Logs the schema object right
            Category = mongoose.Model('Category', categorySchema);


        },
        function(err) {
            console.log(err);  //Error here
        });
    //...
}

私はMongoに非常に慣れていません(そしてノードにはかなり慣れていません)が、エラーメッセージが何を意味するのかまったくわかりません。

スキーマでオプションが定義されていることは知っていますが、それがどのように未定義になるかわかりません。誰かが私を正しい方向に向けることができますか?

注 - これは元のコードから大きく切り取ったものです。これは一般的な構造です (実際には以下にいくつかのコードmongoose.Model('Cat...がありますが、スキップされます。その直後にmongoose.Modela さえ出力されないため、呼び出しによってエラーがスローされるためだと思います。console.log("Hello");

EDIT Mongoose (mongoose/lib/document.js) 内で取得しようとしていることがわかりましたthis.schemaが、未定義です

function Document (obj, fields, skipId) { //Line 37
    this.$__ = new InternalCache;
    this.isNew = true;
    this.errors = undefined;

    var schema = this.schema; //-> undefined
    // ...
4

3 に答える 3

86

つまり、私は観察するタイプではありません。

mongoose.Modelする必要がありますmongoose.model

于 2013-04-06T13:06:33.940 に答える
3

これを呼び出しても同じエラーが発生する可能性があります。

MyModel = new mongoose.model('<your model name>', mySchema)

新しいものを削除する場合。

于 2014-07-18T04:09:20.010 に答える