Mongooseを使用してMongoDBにデータを追加しようとしていますが、そのデータをデータベースに保存できません。私はthisのチュートリアル(〜11分)に従っていますが、動画はMongooseの別のバージョンを使用している可能性があります。MongooseでシードされたデータがMongoDBに保存されていません
基本的に、私は別のJSファイルで定義されたProductスキーマを持っていて、Mongoデーモンを実行している端末でnode productSeeder.js
を実行してproductSeeder.jsというファイルを実行しています。私が正しいデータベースに切り替えてをMongoシェルに入力すると、何も私に返されません。
私productSeeder.jsファイル:
var Product = require('../models/product');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/shopping');
var products = [
new Product({
imagePath: 'images/dummy.png',
price: 9,
title: 'a title',
desc: 'some text'
}),
new Product({
imagePath: 'images/dummy.png',
price: 5,
title: 'a title',
desc: 'some text'
})
];
var done = 0;
for (var i = 0; i < products.length; i++) {
products[i].save(function(err, result) {
if (err) {
console.log(err);
return;
};
done++;
if (done == products.length) {
mongoose.disconnect();
};
});
};
マイproduct.jsファイル:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var schema = new Schema({
imagePath: {type: String, required: true},
price: {type: Number, required: true},
title: {type: String, required: true},
desc: {type: String, required: true}
});
module.exports = mongoose.model('Product', schema);
本当にありがとうございました、と幸せな休日!
コンソールにエラーはありませんか? console.logを使用してみましたか、保存コールバックによって返された結果値をデバッグしましたか?それには何が含まれていますか? – SunriseM
エラーはありません。私は結果を印刷しようとしました、それは正しい製品を印刷します。 – gridproquo
'if done'内でProduct.find({}、function(err、products){console.log(products.length)})を自分のコードに追加しました。何らかの理由で、ファイル全体を実行するたびに長さが増えます。つまり、実際にデータが保存されていますか?データがMongoDBシェルで私に返されないという理由がありますか? – gridproquo