Mongoose를 사용하여 MongoDB에 데이터를 추가하려고하는데 데이터를 데이터베이스에 저장하는 데 문제가 있습니다. 나는 this 튜토리얼을 YouTube에서 (~ 11 분) 따르고 있지만, 비디오가 몽구스의 다른 버전을 사용하고있을 수도 있다고 생각합니다.Mongoose에 시드 된 데이터가 MongoDB에 저장되지 않았습니다.
기본적으로 별도의 JS 파일에 제품 스키마가 정의되어 있으며 실행중인 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