首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猫鼬猫不起作用的例子

猫鼬猫不起作用的例子
EN

Stack Overflow用户
提问于 2015-05-14 18:25:05
回答 2查看 1.3K关注 0票数 2

我正试着从猫鼬网站上的小猫例子开始,但我一直收到这样的错误:

Process.nextTick(函数(){抛错误;}) ^ TypeError:未定义不是函数

我的代码是直接复制从网站的例子,但它将无法工作。

代码语言:javascript
复制
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开始,需要一些帮助来掌握它的诀窍。

提前谢谢你。

更新:完整的错误消息

代码语言:javascript
复制
/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...
EN

回答 2

Stack Overflow用户

发布于 2015-05-14 18:56:55

您正在编译模式两次,其中一次是在定义方法之前。这一行具体如下:

代码语言:javascript
复制
var Kitten = mongoose.model('Kitten', kittySchema)

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

另外,作为将来的参考,您粘贴的TypeError: undefined is not a function错误没有多大用处,但是它下面的调用堆栈,它指出了不稳定的has no method 'speak'

票数 6
EN

Stack Overflow用户

发布于 2019-01-16 19:57:11

代码语言:javascript
复制
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true});

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  // we're connected!`enter code here`
  var kittySchema = new mongoose.Schema({
    name: String
  });

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 silence = new Kitten({ name: 'Silence' });
console.log(silence.name); // 'Silence'

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

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30244618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档