Node.js
43
Вклад в тег
var fs = require('fs')
, request = require('request');
request.get('http://fs.moviestape.net/video/1c4ed0ac8b7d5b4de6c5d58e2ea31a63/serials/Narcos/s01/Narcos.S01E01.mp4')
.on('error', function(err) {
console.error(err);
})
.on('response', function(res) {
console.log(res.statusCode);
console.log(res.headers['content-type']);
})
.pipe(fs.createWriteStream('Narcos.S01E01.mp4'))
.on('finish', function() {
console.log('OK');
});
const Schema = mongoose.Schema; //так просто удобнее
const brandSchema = new Schema ({
name: String,
image: String
});
const productSchema = new Schema ({
name: String,
image: String,
brand: { type: Schema.Types.ObjectId, ref: 'Brand' } // этот ref ссылается на имя модели, которое будет ниже
});
var Brand = mongoose.model('Brand', brandSchema); // вот оно, это имя в казычках
var Product = mongoose.model('Product', productSchema);
var briony = new Brand({
name: "Briony",
image: ".../briony.jpg"
});
var shapka = new Product({
name: "Shapka",
image: "...../shapka.jpg",
brand: briony // тут id брэнда этой шапки (как показал чувак в том ответе - и я проверял - mongoose сам сообразит именно id брэнда вписать по переменной briony, но можно и явно - briony._id)
});
briony.save();
shapka.save();
populate
. Его смысл заключается в том, чтобы не передавать в документ много информации о соотносимом с ним документом - когда этой информации там действительно много. А тут только две строчки: имя и ссылка на логотип.const brandSchema = new Schema ({
name: String,
image: String,
products: [{ type: Schema.Types.ObjectId, ref: 'Product' }]
});
var briony = new Brand({
name: "Briony",
image: ".../briony.jpg"
});
briony.products.push(shapka._id);
Product
.findOne({ name: 'Shapka' })
.populate('brand') // это означает "заселить", т.е. по айдишнику, вписанному в поле brand продукта, найти в коллекции брендов - нужный брэнд и вывалить сюда всю о нём информацию
.exec ... // и т.д.
Product
.findOne({ name: 'Shapka' })
.populate('brand', 'image')
.exec ... // и т.д.
.populate('brand', 'name')