Я создаю приложение express.js и создал базу данных в mongoose для целей тестирования.база данных находится внутри function seedDB()
, который я экспортирую в файл app.js.Создание исходной базы данных не имеет ошибки, но когда я добавляю новый «обзор» внутри этих данных.он говорит cannot read property "push" of undefined
, хотя моя модель мангусты установлена правильно.
У меня есть две коллекции внутри mongoDB, называемые "туры" и "обзоры". Я попытался просмотреть туры внутри оболочки Монго с помощью db.tours.find() и я обнаружил, что мой «обзор», представляющий собой массив, связанный с коллекцией отзывов, настроен правильно.Но когда я посмотрел вверх db.reviews.find ().Он также есть, но он дает результат примерно в 4 раза, что мой ожидаемый результат.
Я попытался проверить, не забыл ли я скобки, фигурная скобка, но думаю, что это не проблема.Я также пытался смотреть на мои модели снова и снова и снова менять, но также нет проблем
const tours = require("./models/tours");
const Review = require('./models/reviews');
let tourData = [{
image: "image.jpg",
place: "Place",
name: "name",
description: "this is a description",
price: 1234,
info: "this is a great tour"},
{
image: "image.jpg",
place: "Place",
name: "name",
description: "this is a description",
price: 1234,
info: "this is a great tour"},
{
image: "image.jpg",
place: "Place",
name: "name",
description: "this is a description",
price: 1234,
info: "this is a great tour"},
]
function seedDB(){
tours.deleteMany({}, (err)=>{
if(err){
console.log(err);
}
console.log("removed tours!");
//add a few tours
tourData.forEach(function(seeds){
tours.create(seeds, (err, data)=> {
if(err){
console.log(err)
} else {
console.log('added all tours!');
//create a comment
Review.create(
{
text: "this place is great! ",
author: "Arnold"
}, (err, comment)=> {
if(err){
console.log(err)
} else {
tours.reviews.push(comment); //why is this undefined? I set it up correctly
tours.save();
console.log("created new review")
}
});
}
});
});
});
};
module.exports = seedDB
, пока console.log('added all tours!');
все идет хорошо, но когда я поставил Review.create()
, теперь он имеет ошибкув частности модель tours.reviews.push(comment);
//tours.js model
const mongoose = require('mongoose');
var ToursSchema = new mongoose.Schema({
image: String,
place: String,
name: String,
description: String,
price: Number,
info: String,
creator: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
username: String
},
reviews:[
{
type: mongoose.Schema.Types.ObjectId,
ref: "Review"
}
]
});
let Tours = mongoose.model('Tour', ToursSchema);
module.exports = Tours;
reviews.js
const mongoose = require('mongoose');
var reviewSchema = mongoose.Schema({ //I also tried doing new Mongoose.Schema({
text: String,
author: String
});
module.exports = mongoose.model('Review', reviewSchema);
ожидаемые результаты в консоли должны составлять
removed tours!
added all tours!
added all tours!
added all tours!
created new review
created new review
created new review
, а фактические результаты в базе данных mongoесть array of reviews
внутри tours collections
.