Intereting Posts
Как установить Angular2 универсальный, если документы на сайте устарели? Чтение двоичных данных из дочернего процесса в Node.js Firebase Angular 4 Инициализировать на основе среды узла Фактическое использование шаблона Jade и angularjs AWS API Gateway – эластичный бобовый стебель – ограниченный доступ Виртуальная среда Google Cloud Environmnet Время выполнения каждой функции В чем разница между npm 3 против Bower? Почему я не могу отладить приложение nodejs в Intellij IDEA 11? Как я могу проверить существование адреса электронной почты и существование доменного имени в javascript или nodeJs? Агрегат: вернуть документ без субдокумента ИЛИ только с последним вложенным документом Рекомендуемый способ удаления объекта в MongoDB на основе маршрута Метод снукера / моделирование модели Mongoose Sequelize – объединение нескольких столбцов Каково состояние интеграции BreezeJS с express-и mongo DB? Как распаковать файл в node.js

Mongoose соединяют две коллекции

У меня есть коллекция продуктов, а другая – на замену запаса продукта. Я ищу, что когда я получаю продукты, появляются все даты пополнения и новый запас, что-то вроде этого:

{ "ok": true, "producto": { "repo": [ { "_id": "5ac643ab88b5a132384f7758", "restock": 22, "date": "2018-03-04T03:00:00.000Z", "producto": "5ac6433588b5a132384f7757", "__v": 0 }, { "_id": "5ac6470079b67f39985ffe3c", "restock": 44, "date": "2018-04-04T03:00:00.000Z", "producto": "5ac6433588b5a132384f7757", "__v": 0 } ], "_id": "5ac6433588b5a132384f7757", "nombre": "Vianda Vegetariana", "usuario": "5ac546f293e2b932a47b5f43", "createdAt": "2018-04-05T15:39:33.911Z", "updatedAt": "2018-04-05T15:39:33.911Z", "__v": 0 } } 

Но я только понимаю:

 { "ok": true, "producto": { "repo": [], "_id": "5ac6433588b5a132384f7757", "nombre": "Vianda Vegetariana", "usuario": "5ac546f293e2b932a47b5f43", "createdAt": "2018-04-05T15:39:33.911Z", "updatedAt": "2018-04-05T15:39:33.911Z", "__v": 0 } } 

Это мой фактический код:

 // repo schema var repositorSchema = new Schema({ restock: { type: Number, required: [true, 'El restock es necesario']}, date: { type: Date, required: true }, producto: { type: Schema.Types.ObjectId, ref: 'Producto'}, usuario: { type: Schema.Types.ObjectId, ref: 'Usuario', required: true } }, { timestamps: true } ); module.exports = mongoose.model('Repositor', repositorSchema); //product schema var productoSchema = new Schema({ nombre: { type: String, required: [true, 'El nombre es necesario']}, sku: { type: String, required: false }, repo: [{ type: Schema.Types.ObjectId, ref: 'Repositor', required: true }], usuario: { type: Schema.Types.ObjectId, ref: 'Usuario', required: true } }, { timestamps: true } ); module.exports = mongoose.model('Producto', productoSchema); 

Мой код для заполнения:

 Producto.find({}) .populate('repo') .exec( (err, productos)=> { if (err) { return res.status(500).json({ ok: false, mensaje: 'Error cargando productos', errors: err }); } Producto.count({}, (err, conteo)=> { res.status(200).json({ ok: true, total: conteo, productos: productos }); }); }); 

Почему не работает? Как заполнять эти два?

    Я решил это следующим образом. В функции создания запаса я ищу соответствующий продукт и выполняю push :

     app.post('/', mdAuth.verifyToken, (req, res)=>{ var body = req.body; var repo = new Repo ({ restock: body.restock, date: body.date, producto: body.producto, usuario: req.usuario._id }); repo.save( (err, repoGuardado)=>{ if (err) { return res.status(400).json({ ok: false, mensaje: 'Error al crear repo', errors: err }); } res.status(201).json({ ok: true, repo: repoGuardado }); /* actuializar repo en producto */ var id = body.producto; Producto.findById( id, (err, producto)=> { if (err) { return res.status(500).json({ ok: false, mensaje: 'Error al buscar producto', errors: err }); } if (!producto) { return res.status(400).json({ ok: false, mensaje: 'No existe un producto con ese ID', errors: { message: 'No existe un producto con ese ID' } }); } producto.repo.push(repo); producto.save(); }); /* end producto find */ }); });