2017-07-28 14 views
1

Node.jsに関する質問スキーマ、モデル、npm 私はnode.jsを使い慣れていないので、mongooseのドキュメントでスキーマとモデルを作成する手順に従っています。Node.jsに関する質問SChemaとモデル

http://mongoosejs.com/docs/

は私が出力に私はkittens.jsを使用してindex.jsに作られたモデルをしようとしていますが、私は正しいやっているかはわかりません。私がコンパイルしようとするとエラーがあり

C:\Atom\initial\index.js:11 
db.on('error', console.error.bind(console, 'connection_error')); 
^

TypeError: Cannot read property 'on' of undefined 
    at Object.<anonymous> (C:\Atom\initial\index.js:11:3) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.runMain (module.js:604:10) 
    at run (bootstrap_node.js:394:7) 
    at startup (bootstrap_node.js:149:9) 
    at bootstrap_node.js:509:3 

私はindex.js内のコードを次のようしています。

var express = require('express'); 
    var mongoose = require('mongoose'); 
    var path = require('path'); 
    var logger = require('morgan'); 
    var bodyParser = require('body-parser'); 
    var Kitty = require('./models/kittens.js'); 
    mongoose.connect("my database"); 

    db.on('error', console.error.bind(console, 'connection_error')); 

    db.once('open', function(){ 
     console.log("Connected!"); 
    }); 

    var db = mongoose.connection; 

    var Kitty = db.model('Kitty', kittySchema); 

    var silence = new Kitty({name: 'Silence'}); 
    console.log(silence.name); 

    db.close(); 

これは私のモデルスキーマです。私がしようとしたときに

var mongoose = require('mongoose'); 
    var Schema = mongoose.Schema; 

    var kittySchema = new Schema({ 
    name: String 
    }); 

    var Kitty = mongoose.model('Kitty', kittySchema); 
    module.exports = Kitty; 

は当初、私は、NPMの急行とマングースをインストールしなかったので、これはと思ったが、私はそれらをインストールしようとしたとき、この

[ ..............] \ fetchMetadata: verb afterAddevents.js:160ps://registry.npmjs.org/mime-types 
     throw er; // Unhandled 'error' event 
    ^

Error: This socket is closed 
    at WriteStream.Socket._writeGeneric (net.js:678:19) 
    at WriteStream.Socket._write (net.js:729:8) 
    at doWrite (_stream_writable.js:333:12) 
    at writeOrBuffer (_stream_writable.js:319:5) 
    at WriteStream.Writable.write (_stream_writable.js:246:11) 
    at WriteStream.Socket.write (net.js:656:40) 
    at Object.Gauge._doRedraw (C:\Program Files\nodejs\node_modules\npm\node_modules\npmlog\node_mo 
dules\gauge\index.js:208:26) 
    at Object.Gauge.hide (C:\Program Files\nodejs\node_modules\npm\node_modules\npmlog\node_modules 
\gauge\index.js:162:8) 
    at EventEmitter.log.clearProgress (C:\Program Files\nodejs\node_modules\npm\node_modules\npmlog 
\log.js:127:14) 
    at EventEmitter.log.disableProgress (C:\Program Files\nodejs\node_modules\npm\node_modules\npml 
og\log.js:88:8) 

のようなエラーメッセージがありますexpressとmongooseを他のファイルにインストールすると、これも起こりました。

アイデアは私に役立ちます!ありがとうございました!

+0

@mrogers 'VARデシベル= mongoose.connectionがある;' – frozen

答えて

0

実際に関数が上に吊り下げられるので、最初にdb varialbleを定義してから使用してください。

var express = require('express'); 
    var mongoose = require('mongoose'); 
    var path = require('path'); 
    var logger = require('morgan'); 
    var bodyParser = require('body-parser'); 
    var Kitty = require('./models/kittens.js'); 
    mongoose.connect("my database"); 
    var db = mongoose.connection; 

    db.on('error', console.error.bind(console, 'connection_error')); 

    db.once('open', function(){ 
     console.log("Connected!"); 
    }); 



    var Kitty = db.model('Kitty', kittySchema); 

    var silence = new Kitty({name: 'Silence'}); 
    console.log(silence.name); 

    db.close(); 
+0

ハハ、そうそう。私はdb変数を忘れてしまった。私は1つを追加しました、ありがとう、しかし今私のエラーはこれを言う。 – Asu

+0

私は "var Kitty = db.model( 'Kitty'、kittySchema);"を削除しました。今はうまくいく!ありがとうございました – Asu