#javascript #node.js #mongodb #mongoose
#javascript #node.js #mongodb #mongoose
Вопрос:
У меня есть две модели, каждая в своем собственном файле js в одном каталоге. Одна называется Place (для приложения для списка списков путешествий), а другая называется Country . Страна имеет URL-адрес изображения своего флага в качестве ключевого flagURL. Я хочу заполнить ключ Place «flag» значением flagURL из Country . Каков наилучший способ сделать это?
Модель размещения
const mongoose = require('mongoose');
const placeSchema = new mongoose.Schema({
city: String,
country: String,
img: String, // this is for an image of the place, not the flag
flag: 'flagImg URL Here',
visited: Boolean,
});
const Place = mongoose.model('Place', placeSchema);
module.exports = Place;
Модель страны
const mongoose = require('mongoose');
const countrySchema = new mongoose.Schema({
countryName: String,
countryCode: String,
flagImg: String
});
const Country = mongoose.model('Country', countrySchema);
module.exports = Country;
Спасибо за помощь в моем вопросе для начинающих!
Комментарии:
1. как место ссылается на страну? По какому пути в схеме Country?
countryName
илиcountryCode
или, может быть, даже_id
? Это непонятно, потому что в нем просто написаноcountry
inplaceSchema
.
Ответ №1:
Вам нужно будет ссылаться на схему страны в вашей схеме места (чтобы получить страну, связанную с этим конкретным местом).
const mongoose = require('mongoose');
const placeSchema = new mongoose.Schema({
city: String,
img: String, // this is for an image of the place, not the flag
visited: Boolean,
country: {
type:mongoose.Schema.ObjectId,
ref: 'Country',
required: [true, 'A place must have a country']
}
});
const Place = mongoose.model('Place', placeSchema);
module.exports = Place;
Свойство country предоставит вам доступ ко всем значениям свойств схемы country, относящимся к определенному месту.
Ваша полезная нагрузка будет такой:
{
"city": "califonia",,
"img": dafault.png, // this is for an image of the place, not the flag
"visited": true,
"country": {
"countryName": "United States of America",
"countryCode": US,
"flagImg": dafault.png, // the country's flag
}
}