node.js - Mongoose one-to-many -
can explain me how organize mongoose models create 1 many connections? needed keep separate collections.
suppose have stores , items
//store.js
var mongoose = require('mongoose'); module.exports = mongoose.model('store', { name : string, itemsinstore: [ string] }); //item.js
var mongoose = require('mongoose'); module.exports = mongoose.model('item', { name : string, storeforitem: [string] }); am doing in right way?
and how access pass data arryas? here code yo enter name item. how enter id array of id's (itemsinstore)?
app.post('/api/stores', function(req, res) { store.create({ name: req.body.name, }, function(err, store) { if (err) res.send(err); }); })
you should use model reference , populate() method: http://mongoosejs.com/docs/populate.html
define models:
var mongoose = require('mongoose'); var schema = mongoose.schema; var storeschema = schema({ name : string, itemsinstore: [{ type: schema.types.objectid, ref: 'item' }] }); var store = mongoose.model('store', storeschema); var itemschema = schema({ name : string, storeforitem: [{ type: schema.types.objectid, ref: 'store' }] }); var item = mongoose.model('item', itemschema); save new item existing store:
var item = new item({name: 'foo'}); item.save(function(err) { store.itemsinstore.push(item); store.save(function(err) { // todo }); }); get items store
store .find({}) // .populate('itemsinstore') .exec(function (err, stores) { if (err) return handleerror(err); // stores items });
Comments
Post a Comment