javascript - Mongoose 小猫示例不起作用

标签 javascript node.js mongodb mongoose

我正尝试开始使用 mongoose 网站上的小猫示例,但我一直收到此错误消息:

process.nextTick(function() { throw err; }) ^ TypeError: undefined is not a function

我的代码是直接从网站上的例子复制过来的,但是不行。

var express = require('express');
var mongoose = require('mongoose');

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


var app = express();
var db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {

  var kittySchema = mongoose.Schema({
      name: String
  })

  var Kitten = mongoose.model('Kitten', kittySchema)

  var silence = new Kitten({ name: 'Silence' })
console.log(silence.name) // 'Silence'

// NOTE: methods must be added to the schema before compiling it with mongoose.model()
kittySchema.methods.speak = function () {
  var greeting = this.name
    ? "Meow name is " + this.name
    : "I don't have a name"
  console.log(greeting);
}

var Kitten = mongoose.model('Kitten', kittySchema)

var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak() // "Meow name is fluffy"
});

app.get('/', function(req, res) {
  res.send('hello world');
});

app.get('/secret', function(req, res) {
  res.send('secret page');
});

var port = process.env.PORT || 1337;

app.listen(port, function() {
  console.log('http://127.0.0.1:' + port + '/');

});

如果答案很明显,我很抱歉,但我刚刚开始使用 Node.js,需要一些帮助来掌握它。

提前谢谢你。

更新:完整的错误信息

/Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/lib/server.js:274
      process.nextTick(function() { throw err; })
                                          ^
TypeError: undefined is not a function
    at NativeConnection.<anonymous> (/Users/joseph/Documents/Atom-files/test/app.js:18:17)
    at NativeConnection.g (events.js:199:16)
    at NativeConnection.emit (events.js:104:17)
    at open (/Users/joseph/Documents/Atom-files/node_modules/mongoose/lib/connection.js:485:10)
    at NativeConnection.Connection.onOpen (/Users/joseph/Documents/Atom-files/node_modules/mongoose/lib/connection.js:494:5)
    at /Users/joseph/Documents/Atom-files/node_modules/mongoose/lib/connection.js:453:10
    at /Users/joseph/Documents/Atom-files/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:59:5
    at /Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/lib/db.js:206:5
    at connectHandler (/Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/lib/server.js:272:7)
    at g (events.js:199:16)
    at emit (events.js:107:17)
    at /Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:374:23
    at /Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:730:13
    at Callbacks.emit (/Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:84:3)
    at null.messageHandler (/Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:219:23)
    at Socket.<anonymous> (/Users/joseph/Documents/Atom-files/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:259:22)
14 May 21:02:09 - [nodemon] app crashed - waiting for file changes before starting...

最佳答案

您要编译架构两次,其中一次是在定义方法之前。这一行具体是:

var Kitten = mongoose.model('Kitten', kittySchema)

您需要等到定义了 kittySchema.methods 之后再用 mongoose.model 编译它。您自己的代码注释告诉您不要这样做 :)

此外,为了将来引用,您粘贴的 TypeError: undefined is not a function 错误没有多大用处,但它下面的调用堆栈很有用,它指出了蓬松的 没有方法“说”

关于javascript - Mongoose 小猫示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30244618/

相关文章:

javascript - 想要保持背景固定直到某个向下滚动点

javascript - 实现内联扩展

node.js - 如何在AWS EC2上存储环境变量?

Node.js Sequelize 连接

javascript - 在不使用多个 "then' 的情况下链接 Promise"

Javascript:Math.floor(Math.random()*array.length) 没有生成随机数?

Javascript - 如何检查 "certain"复选框而不是全部使用我当前的代码?

mongodb - 如何在 MongoDB 中的数组中更新和插入新元素

node.js - 如何在 Node.js Web 应用程序中管理 MongoDB 连接?

mongodb - 在mongoDB中使用golang结构进行嵌套字段更新