Я пытаюсь создать функцию "списка желаний" для пользователей в моем приложении node / mongo. Я предположил, что лучший способ смоделировать схему - это ссылаться на элементы, которые им нравятся. Пока мое чтение привело меня к этой точке (я не очень знаком с Types.ObjectID):
Модель схемы
var UserSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true,
trim: true
},
password: {
type: String,
required: true
},
wishlist: [{
type: mongoose.Schema.Types.ObjectId,
ref: "Wishlist",
required: true
}]
});
Мне удалось написать некоторый код, который помещает соответствующий _id в массив "Likes":
Product.findById(productID).exec(function (err, user) {
User.updateOne({ _id: req.session.userId }, { "$push": { "wishlist": productID } }, function (err, user) {
if (err) {
console.log("Failed to add")
} else {
console.log(productID + " has been added")
}
});
});
Это выводит в базу данных примерно так:
{
"_id" : ObjectId("5c3f7e1f1268203b1f31cb17"),
"email" : "email",
"password" : "password",
"__v" : 0,
"wishlist" : [
ObjectId("5c41f4b42f82b14798d5c7fc"),
ObjectId("5c41f4b42f82b14798d5c7ff")
]
}
Я застрял на том, как вывести эти элементы списка желаний в свой шаблон. Мое предположение состояло в том, чтобы получить данные как это:
router.get('/wishlist', middleware.requiresLogin, function(req, res, next) {
User.findOne({ _id: req.session.userId }, function(err, user) {
res.render('wishlist', {
title: 'Wishlist',
template: 'wishlist',
saved: user.wishlist,
header: true,
footer: true
});
});
});
И цикл по пунктам, как это:
{{#each saved }} Code goes here {{/each }}
Правильно ли я подхожу к этому?