2017-06-14 7 views
0

このコードを使用して、mlabでホストされているMongoDBデータベースにコレクションを作成します。しかし、どういうわけか、それは機能していないようです。このコードには何かがありますか? .save()関数はまったく起動していないようです。私のスキーマに起因することはありますか?MongoDBデータベースでコレクションを作成できません

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

app.use(express.static(__dirname+'/views')); 
app.use(express.static(path.join(__dirname, 'public'))); 

//connect to mongo db database 
mongoose.connect('mongodb://blaa:[email protected]:27132/vendor'); 


//vendor schema 
var vendorSchema= new Schema({ 
    name:String, 
    image: { data: Buffer, contentType: String }, 
    vendortype:String, 
    location: { 
    type: [Number], // [<longitude>, <latitude>] 
    index: '2d'  // create the geospatial index 
    }, 
    contactinfo:String, 
    description:String 
}); 

//creating a model for mongoDB database 
var Vendor= mongoose.model('Vendor',vendorSchema); 

//just putting a sample record data 
var imgPath = 'public/images/background.jpg'; 
var one = Vendor({ 
name: 'Justin Motor Works', 
vendortype: 'Automobile', 
contactinfo:'6764563839', 
location: { 
    type:[23.600800037384033,46.76758746952729] 
}, 
image: { 
    data: fs.readFileSync(imgPath), 
    contentType: 'image/jpg' 
}, 
description: 'Motor workshop' 
}). 
save(function(err){ 
    if(err) 
    throw err; 
    else { 
    console.log('create record failed'); 
    } 
}); 
+0

これはどのようにテストしていますか?接続できるようにサーバーを起動していますか? –

+0

さて、サーバーを起動してHTMLファイルをレンダリングするだけです。私は、新しく作成されたコレクションのデータベースを探しています。 –

+0

この行を行いますmongoose.connect( 'mongodb:// blaa:[email protected]:27132/vendor');データベースが接続されていないときにエラーをスローするはずがありません。私はそれが正しく接続されていると言っているmongoターミナルでURLを試しました –

答えて

0

mongoose.connectは非同期関数である、あなたはコールバックやpromise.then(function(){内にコードを配置する必要があります。

これを試してみてください:

mongoose.connect('mongodb://blaa:[email protected]:27132/vendor', function(error) { 
    if (error) 
     //handle error 
    //Your code 
}); 

それともこれを:

mongoose.connect('mongodb://blaa:[email protected]:27132/vendor').then(
() => { 
    //Your code 
    }, 
    err => { 
    //Your error handling 
    } 
); 

お知らせエラーハンドリング、それは今後のデバッグのためにエラーの原因を知っておくことが重要です。


@NeilLunnはこのような何かにコメントで言ったようにあなたがそれを保存している場合もlocationのJSONの構造を変更:マングースに

location: [23.600800037384033,46.76758746952729], 

typeは、実際には、キーのタイプを定義すること、ネストされたtypeキーではありません。

関連する問題