创建模型时出现Mongoose错误(使用Step)

时间:2013-04-05 18:19:40

标签: node.js mongodb mongoose

尝试在Mongoose中创建模型时,我收到以下错误

[TypeError:无法读取未定义的属性'选项'

我不知道是什么导致它

"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...但是它被跳过了,我假设因为错误是由{{1}引发的即使在mongoose.Model之后直接打印,也不会打电话。

修改 我发现在Mongoose内部(mongoose / lib / document.js)尝试获取console.log("Hello");但它未定义

this.schema

3 个答案:

答案 0 :(得分:76)

事实证明我不是观察者,

mongoose.Model应为mongoose.model

答案 1 :(得分:3)

您也可以通过调用此错误获得相同的错误。

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

如果你删除了新的。

答案 2 :(得分:0)

在Promise链中使用模型方法时也会显示此错误消息,例如:

<!DOCTYPE html>
<html>

<head>
</head>

<body>
  <form id="regform" action="/initialsetup3SANDBOX.php" method="post" onsubmit="return myFunction();">
    <input id="pass1" type="password" placeholder="Password" style="border-radius:7px; border:2px solid #dadada;"><br>
    <input id="pass2" type="password" placeholder="Confirm Password" style="border-radius:7px; border:2px solid #dadada;"><br>
    <input type="submit" value="Submit" />
  </form>
</body>

</html>

要解决此问题,您必须确保您的猫鼬模型保留其原始上下文。

const Product = mongoose.model('Product', ProductSchema)

ScrapProducts()
  .then(mapToModel)
  .then(Product.create)

或更好:

const Product = mongoose.model('Product', ProductSchema)

ScrapProducts()
  .then(mapToModel)
  .then(function(data) {
    return Product.create(data)
  })