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')