diff --git a/browser/js/admin/cake/list.html b/browser/js/admin/cake/list.html index da6f1be..5d11dd7 100644 --- a/browser/js/admin/cake/list.html +++ b/browser/js/admin/cake/list.html @@ -3,9 +3,7 @@

Stock Cake List

- {{cake | json}}

{{cake.name }} - {{cake.price | currency}}

-
Shape: {{ cake.shape._id }}
Type: {{ cake.type }}
Quantity: {{ cake.quantity }}
diff --git a/browser/js/cart/cart.html b/browser/js/cart/cart.html index 82aa3fc..bc6f65f 100644 --- a/browser/js/cart/cart.html +++ b/browser/js/cart/cart.html @@ -1,24 +1,23 @@

CART

- Name: {{ c.name }}
- Type: {{ c.type }}
- Shape: {{ c.shape }}
- Icing: {{ c.icing }}
- Quantity Ordered: {{c.numOrdered}}
- Price: ${{ c.price }}

+ Name: {{ c.name }}
+ Layers: {{c.layerNum}}
+ Shape: {{ c.shape.name }}
+ Icing: {{ c.icing.name }}
+ Quantity Ordered: {{c.numOrdered}}
+ Price: ${{ c.price }}

+ +

Your Cart is Empty. We recommend the cake!


+
-TOTAL: ${{ price }} +

TOTAL: ${{ price }}

- - - - \ No newline at end of file diff --git a/browser/js/cart/cart.js b/browser/js/cart/cart.js index 767bc5e..5fd8474 100644 --- a/browser/js/cart/cart.js +++ b/browser/js/cart/cart.js @@ -47,16 +47,19 @@ app.config(function ($stateProvider) { app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams, $localStorage, CartFactory, OrderFactory, getCartOfCakes, AuthService, isAuthenticated) { - $scope.cart = getCartOfCakes; - + $scope.cart = getCartOfCakes.map(function (cake) { + console.log('CAKE', cake); + var layNum = 0; + for(var i = 0; i < 3; i++) { + if(cake.layers[i].filling !== null) layNum++ + } + cake.layerNum = layNum; + return cake; + }); $scope.localCart = $localStorage.cart - $scope.checkingOut = $localStorage.checkingOut - console.log('scope.cart', $scope.cart); - $scope.price = CartFactory.calculateCart($scope.cart); - $scope.currentStore = $localStorage.currentStore; $scope.checkout = function (cart) { @@ -66,25 +69,29 @@ app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams, } var store = cart[0].storeId; + if (AuthService.isAuthenticated()) { - var cakes = cart.map(function (cake) { - return cake._id; - }); - - console.log("arrayed cakes", cakes) - console.log("authenticated?", AuthService.isAuthenticated() ) - if (AuthService.isAuthenticated()) { - OrderFactory.createNewOrder(store, cakes, $scope.price).then(function(order){ - console.log(order) - delete $scope.cart - // $state.go() - }) + OrderFactory.createNewOrder(calculateOrders($scope.cart)).then(function (order) { + console.log('order', order); + }); } - }; - $scope.calculateOrders = function (cakeArray) { + $scope.removeCake = function (cake) { + CartFactory.deleteFromCart(cake).then(function (data) { + // $state.go('cart'); + $scope.cart = $scope.cart.filter(function (theCake) { + console.log('THECAKE', theCake); + if(cake._id !== theCake._id) return true; + }); + console.log('scope.cart', $scope.cart); + $scope.$digest(); + }); + + } + + var calculateOrders = function (cakeArray) { var retArr = []; var orderObj = function(storeId) { this.storeId = storeId; @@ -92,8 +99,9 @@ app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams, this.total = 0; } cakeArray.forEach(function (cake) { + console.log('CAKE', cake); if(!retArr.length) { - retArr.push(new orderObj(cake.storeId.toString())); + retArr.push(new orderObj(cake.storeId)); retArr[0].cakes.push(cake._id); retArr[0].total += cake.price; } @@ -101,7 +109,7 @@ app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams, var exists = false; var index = null; for(var i=0; i < retArr.length;i++) { - if(retArr[i].storeId === cake.storeId.toString()) { + if(retArr[i].storeId === cake.storeId) { exists = true; retArr[i].cakes.push(cake._id); retArr[i].total += cake.price; @@ -114,7 +122,7 @@ app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams, } } }); - console.log('ORDER ARRAY', retArr); + return retArr; } diff --git a/browser/js/common/directives/navbar/navbar.js b/browser/js/common/directives/navbar/navbar.js index 40322eb..fb00aad 100644 --- a/browser/js/common/directives/navbar/navbar.js +++ b/browser/js/common/directives/navbar/navbar.js @@ -26,45 +26,53 @@ app.directive('navbar', function ($rootScope, AuthService, AUTH_EVENTS, $state, scope.numCartCakes = $rootScope.numCartCakes; }); - scope.items = [ - // { label: 'Home', state: 'home' }, - // { label: 'About', state: 'about' }, - { label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true }, - { label: 'Store', state: 'storeViewProducts' }, - // { label: 'Tutorial', state: 'tutorial' }, - // { label: 'Members Only', state: 'membersOnly', auth: true }, - { label: 'Cart', state: 'cart'} - ]; - - // AuthService.getLoggedInUser().then(function (user) { - // // console.log('USER', user); - // if(user === null){ - // scope.items.push({ label: 'Signup', state: 'signup' }); - // } else { - // if(!user.storeId) { - // scope.items.push({ label: 'Create A Store', state: 'storeCreate', auth: true }); + // scope.items = [ + // // { label: 'Home', state: 'home' }, + // // { label: 'About', state: 'about' }, + // { label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true }, + // { label: 'Store', state: 'storeViewProducts' }, + // // { label: 'Tutorial', state: 'tutorial' }, + // // { label: 'Members Only', state: 'membersOnly', auth: true }, + // { label: 'Cart', state: 'cart'} + // ]; + + // // AuthService.getLoggedInUser().then(function (user) { + // // // console.log('USER', user); + // // if(user === null){ + // // scope.items.push({ label: 'Signup', state: 'signup' }); + // // } else { + // // if(!user.storeId) { + // // scope.items.push({ label: 'Create A Store', state: 'storeCreate', auth: true }); var calculateNavBar = function () { + + var hasPendingReviews = function () { + return reviewFCT.getUnwrittenReviews().then(function (num) { + return num; + }); + } AuthService.getLoggedInUser().then(function (user) { scope.items = [ - { label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true }, { label: 'Store', state: 'store' }, + { label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true }, { label: 'Cart', state: 'cart'} ]; - // consolnode se.log('HERE'); if(user === null){ scope.items.push({ label: 'Signup', state: 'signup' }); } else { - console.log('USER', user); - if(hasPendingReviews()) { - scope.items.push({ label: 'Review Products', state: 'reviewProduct', auth: true }); - } + hasPendingReviews().then(function (num) { + // console.log('ASDFHASKDFA',num); + if(num.length > 0) { + scope.items.push({ label: 'Review Products', state: 'reviewList', auth: true }); + // console.log('INDEX OF', scope.items); + } + }); if(!user.storeId) { scope.items.push({ label: 'Create A Store', state: 'storeCreate', auth: true }); } } - }); + }) } calculateNavBar(); @@ -88,7 +96,6 @@ app.directive('navbar', function ($rootScope, AuthService, AUTH_EVENTS, $state, AuthService.getLoggedInUser().then(function (user) { scope.user = user; if(AuthService.isAdminAuthenticated()) { - // console.log('sTORE ID', user.storeId); $state.go('adminHome', {storeId : user.storeId}); } else { @@ -97,25 +104,21 @@ app.directive('navbar', function ($rootScope, AuthService, AUTH_EVENTS, $state, }); }; - var hasPendingReviews = function () { - reviewFCT.getUnwrittenReviews().then(function (data) { - return data.data.length; - }); - } - var removeUser = function () { scope.user = null; }; setUser(); - $rootScope.$on(AUTH_EVENTS.loginSuccess, calculateNavBar); + // $rootScope.$on(AUTH_EVENTS.loginSuccess, calculateNavBar); $rootScope.$on(AUTH_EVENTS.loginSuccess, setUser); $rootScope.$on(AUTH_EVENTS.logoutSuccess, removeUser); $rootScope.$on(AUTH_EVENTS.logoutSuccess, calculateNavBar); $rootScope.$on(AUTH_EVENTS.sessionTimeout, removeUser); $rootScope.$on(AUTH_EVENTS.sessionTimeout, calculateNavBar); $rootScope.$on(StoreFCT.saveStore, calculateNavBar); + $rootScope.$on(reviewFCT.saveReview, calculateNavBar); + } diff --git a/browser/js/common/directives/review-form/review-form.html b/browser/js/common/directives/review-form/review-form.html index 1fa360d..9fdb806 100644 --- a/browser/js/common/directives/review-form/review-form.html +++ b/browser/js/common/directives/review-form/review-form.html @@ -1,7 +1,7 @@
- + - + @@ -12,7 +12,7 @@
- +
diff --git a/browser/js/common/factories/CartFactory.js b/browser/js/common/factories/CartFactory.js index e1c3310..79a3afd 100644 --- a/browser/js/common/factories/CartFactory.js +++ b/browser/js/common/factories/CartFactory.js @@ -27,7 +27,7 @@ app.factory('CartFactory', function ($http, AuthService, StoreFCT, $localStorage deleteFromCart: function (cake) { return $http.delete('/api/cart/' + cake._id).then(function(response){ console.log('response', response); - // return response; + return response; }); }, calculateCart: function(cart){ diff --git a/browser/js/common/factories/OrderFactory.js b/browser/js/common/factories/OrderFactory.js index 3a024d6..d256f88 100644 --- a/browser/js/common/factories/OrderFactory.js +++ b/browser/js/common/factories/OrderFactory.js @@ -1,14 +1,14 @@ app.factory('OrderFactory', function ($http, StoreFCT, AuthService, $localStorage, CartFactory, CakeFactory) { return { - createNewOrder: function (store, cakes, total) { - return $http.post('/api/order/', { store : store, cakes : cakes, total : total }, function (response) { + createNewOrder: function (orderArray) { + return $http.post('/api/order/', { orderArray : orderArray }, function (response) { console.log('response', response); return response.data; }); }, completeOrder: function (orderId, storeId) { - return $http.put('/api/store/'+storeId+'/order/'+orderId+'/complete', {status: 'Complete'}, function (data) { + return $http.put('/api/store/'+storeId+'/admin/order/'+orderId+'/complete', {status: 'Complete'}, function (data) { return data.data; }); }, @@ -33,16 +33,6 @@ app.factory('OrderFactory', function ($http, StoreFCT, AuthService, $localStorag if(!locCart[i]._id) customCakes.push(locCart[i]) if(locCart[i]._id) stockCakes.push(locCart[i]) } - console.log("locCart preparsed", locCart) - console.log("custom cakes parsed", customCakes) - console.log("stock cakes parsed", stockCakes) - - //store custom cakes - // CakeFactory.storeManyCakes(customCakes).then(function(customCakes){ - // console.log("customCakes returned from storeManyCakes",customCakes) - // reCombinedCakes.push(customCakes) - // }) - } cartParseSave($localStorage.cart) diff --git a/browser/js/common/factories/reviewFactory.js b/browser/js/common/factories/reviewFactory.js index ac74cc7..0cea6ba 100644 --- a/browser/js/common/factories/reviewFactory.js +++ b/browser/js/common/factories/reviewFactory.js @@ -1,21 +1,28 @@ app.factory('reviewFCT', function ($http, $localStorage, CartFactory, AuthService) { var saveReview = function (reviewObj) { - return $http.post('/api/review/', reviewObj, function (data) { + return $http.put('/api/review/', reviewObj, function (data) { return data.data; }); } - var getUnwrittenReviews = function (userId) { - return $http.get('/api/review/unwritten', function (data) { + var getUnwrittenReviews = function () { + return $http.get('/api/review/unwritten').then(function (data) { return data.data; }); } + var getProductInfo = function (category, productId) { + return $http.get('/api/review/'+category+'/'+productId).then(function (data) { + return data.data; + }); + } + return { saveReview: saveReview, - getUnwrittenReviews: getUnwrittenReviews + getUnwrittenReviews: getUnwrittenReviews, + getProductInfo: getProductInfo }; }); diff --git a/browser/js/review/review.html b/browser/js/review/review.html index f194e08..cb7da05 100644 --- a/browser/js/review/review.html +++ b/browser/js/review/review.html @@ -1 +1,2 @@ +

Review For {{store}}'s {{itemName}}

\ No newline at end of file diff --git a/browser/js/review/review.js b/browser/js/review/review.js index f656f98..8914d2a 100644 --- a/browser/js/review/review.js +++ b/browser/js/review/review.js @@ -1,7 +1,7 @@ app.config(function ($stateProvider) { - $stateProvider.state('reviewProduct', { - url:'/:userId/review/:type/:productId', - templateUrl: 'js/review/review.html', + $stateProvider.state('reviewList', { + url:'/review/', + templateUrl: 'js/review/reviewList.html', controller: 'reviewFormCtrl', resolve: { isAuthenticated: function (AuthService) { @@ -9,23 +9,44 @@ app.config(function ($stateProvider) { } } }); + + $stateProvider.state('reviewItem', { + url: '/review/:category/:reviewId/:productId', + templateUrl: 'js/review/review.html', + controller: 'reviewProductCtrl' + }); }); app.controller('reviewFormCtrl', function ($scope, AuthService, $state, $stateParams, reviewFCT) { - // if(isAuthenticated()) { - // console.log('INSIDE'); - // } - // } else { - // $state.go('login'); - // } - $scope.review = {}; - $scope.review.user = $stateParams.userId; - $scope.review.productId = $stateParams.productId; - $scope.review.category = $stateParams.type; + reviewFCT.getUnwrittenReviews().then(function (data) { + $scope.reviewList = data; + }); + // $scope.review = {}; + // $scope.review.user = $stateParams.userId; + // $scope.review.productId = $stateParams.productId; + // $scope.review.category = $stateParams.type; +}); - $scope.saveReview = function (review) { - console.log('review', review); +app.controller('reviewProductCtrl', function ($scope, $state, $stateParams, reviewFCT) { + reviewFCT.getProductInfo($stateParams.category, $stateParams.productId).then(function (data) { + $scope.itemName = data.name; + $scope.store = data.storeId.name; + console.log('DATA', data); + }); - // reviewFCT. + $scope.review = { + reviewId: $stateParams.reviewId, + category: $stateParams.category, + productId: $stateParams.productId + } + + $scope.saveReview = function (review) { + reviewFCT.saveReview(review).then(function (data) { + // console.log('FINISHED AND IN RPCTRL'); + reviewFCT.getUnwrittenReviews().then(function (data) { + if(data.length == 0) $state.go('store'); + else $state.go('reviewList'); + }); + }); } }); \ No newline at end of file diff --git a/browser/js/review/reviewList.html b/browser/js/review/reviewList.html new file mode 100644 index 0000000..17e9715 --- /dev/null +++ b/browser/js/review/reviewList.html @@ -0,0 +1,4 @@ +
+ +
+
\ No newline at end of file diff --git a/browser/scss/directives/navbar.scss b/browser/scss/directives/navbar.scss index 53f90c0..1a89ff5 100644 --- a/browser/scss/directives/navbar.scss +++ b/browser/scss/directives/navbar.scss @@ -18,6 +18,7 @@ navbar { .nav > li > a { cursor: pointer; + text-shadow: 2px 2px #000; &.active { color: #f30046; } diff --git a/server/app/routes/admin/order/index.js b/server/app/routes/admin/order/index.js index e56d8b4..cba209b 100644 --- a/server/app/routes/admin/order/index.js +++ b/server/app/routes/admin/order/index.js @@ -5,10 +5,8 @@ var _ = require('lodash'); var body = require('body-parser'); var mongoose = require('mongoose'); var Promise = require('bluebird'); -var deepPopulate = require('mongoose-deep-populate'); var OrderModel = mongoose.model('Order'); var ReviewModel = mongoose.model('Review'); -var CakeModel = mongoose.model('Cake'); router.get('/', function (req, res, next) { // status: {$inc: ['Created','Processing','Completed']} -- @@ -21,29 +19,32 @@ router.get('/', function (req, res, next) { }); router.put('/:orderId/complete', function (req, res, next) { - Order.findByIdAndUpdate(req.params.orderId, {$set: { status: req.body.status }}) + OrderModel.findByIdAndUpdate(req.params.orderId, {$set: { status: req.body.status }}) .populate('items') .exec() .then(function (order) { - console.log('USER ID', req.user._id); - console.log('COMPLETED ORDER', order); order.items.forEach( function (item) { - splitItemIntoReviews(item, order.customer); }); }).then(function () { res.send('YAY'); - }); }); var splitItemIntoReviews = function (item, customerId) { - var createOpenReviews = function(array) { - console.log('ITEM ID ARRAY', array); - array.forEach(function (item) { + array.forEach(function (item, index) { + var cat; var nRev = new ReviewModel(); nRev.user = customerId; + if(index == 0) { + cat = 'cake'; + } else if(index == 1) { + cat = 'icing'; + } else { + cat = 'filling'; + } + nRev.category = cat; nRev.productId = item; return nRev.save(); }); @@ -51,14 +52,17 @@ var splitItemIntoReviews = function (item, customerId) { var fillArray = [item._id, item.icing]; item.layers.forEach(function (layer) { - var exists = false; - for (var i = 0; i < fillArray.length ; i++) { - if(layer.filling.toString() === fillArray[i]) { - fillArray[i] - exists = true; + if(layer.filling !== null) { + var exists = false; + for (var i = 0; i < fillArray.length ; i++) { + if(layer.filling.toString() === fillArray[i]) { + fillArray[i] + exists = true; + } } + + if(!exists) fillArray.push(layer.filling.toString()); } - if(!exists) fillArray.push(layer.filling.toString()); }); return createOpenReviews(fillArray); } \ No newline at end of file diff --git a/server/app/routes/cake/index.js b/server/app/routes/cake/index.js index 474789b..cfdc685 100644 --- a/server/app/routes/cake/index.js +++ b/server/app/routes/cake/index.js @@ -9,11 +9,13 @@ var Cake = mongoose.model('Cake'); router.get('/:cakeid', function (req, res, next) { - Cake.findById(req.params.cakeid, function (err, cake) { - if(err) return next(err); + Cake.findById(req.params.cakeid) + .populate('shape icing layers') + .populate('storeId') + .deepPopulate('layers.filling').exec().then(function (cake) { + // if(err) return next(err); res.send(cake); }); - }); diff --git a/server/app/routes/cart/index.js b/server/app/routes/cart/index.js index 8fb1637..ee1620c 100644 --- a/server/app/routes/cart/index.js +++ b/server/app/routes/cart/index.js @@ -88,7 +88,10 @@ router.delete('/:id', function (req, res, next) { Cart.findOne({ user : req.user._id }).exec().then(function (userCart) { userCart.cakes.remove(cake); - return userCart.save(); + userCart.save().then(function (newCart) { + console.log('GOT HERE'); + res.send(newCart); + }); }, next); diff --git a/server/app/routes/order/index.js b/server/app/routes/order/index.js index d888d27..ec425ce 100644 --- a/server/app/routes/order/index.js +++ b/server/app/routes/order/index.js @@ -14,28 +14,35 @@ var Cart = mongoose.model('Cart'); router.post('/', function (req, res, next) { - - var newOrder = new Order({ - customer: req.user._id, - storeId: req.body.store, - total: req.body.total, - items: req.body.cakes + console.log('ARRAY', req.body.orderArray); + + var newOrder = new Order({ + customer: req.user._id, + storeId: orderObj.storeId, + total: orderObj.total, + items: orderObj.cakes + }); + + // newOrder.save(function (err) { + // if (err) return next(err); + // Cart.findOne({ userId: req.user.userId }).exec().then(function (cart){ + // cart.remove().then(function(){ + // res.send("cart deleted after checkout") + // }); + // }); + newOrder.save(function (err) { + if (err) return next(err); + Cart.findOne({ userId: req.user.userId }).exec().then(function(cart){ + return cart.remove() + }).then(function(){ + return Cart.create({user: req.user._id}) + }).then(function(cart){ + console.log("cart was created in order index.js") + res.send("cart deleted after checkout") + }, function(err){ + console.log("orders index.js line 32 error!", err) + }); + }); }); - - newOrder.save(function (err) { - if (err) return next(err); - Cart.findOne({ userId: req.user.userId }).exec().then(function(cart){ - return cart.remove() - }).then(function(){ - return Cart.create({user: req.user._id}) - }).then(function(cart){ - console.log("cart was created in order index.js") - res.send("cart deleted after checkout") - }, function(err){ - console.log("orders index.js line 32 error!", err) - }) - - }) - - }); + diff --git a/server/app/routes/review/index.js b/server/app/routes/review/index.js index 3217878..7d42dd0 100644 --- a/server/app/routes/review/index.js +++ b/server/app/routes/review/index.js @@ -5,14 +5,28 @@ var _ = require('lodash'); var body = require('body-parser'); var mongoose = require('mongoose'); var CakeModel = mongoose.model('Cake'); +var FillingModel = mongoose.model('Filling'); +var IcingModel = mongoose.model('Icing'); var StoreModel = mongoose.model('Store'); var ReviewModel = mongoose.model('Review'); var Promise = require('bluebird'); + +router.put('/', function (req, res, next) { + console.log('HERE'); + ReviewModel.findByIdAndUpdate(req.body.reviewId, {$set: {shortSummary: req.body.shortSummary, description: req.body.description, stars: req.body.rating, reviewCompleted: true}}) + .exec().then(function (review) { + console.log('NEW REVIEW', review); + res.send(review); + }); +}); + + router.get('/unwritten', function (req, res, next) { ReviewModel.find({user: req.user._id, reviewCompleted: false}) .exec().then(function (reviewArr) { + console.log('UNWRITTEN', reviewArr); res.send(reviewArr); }); }); @@ -24,14 +38,32 @@ router.get('/:storeId', function (req, res, next) { }).then(function (store) { CakeModel.find({ storeId: store._id }).exec().then(function (cakes) { res.send(cakes); - }); + }) }); }); +router.get('/cake/:productId', function (req, res, next) { + CakeModel.findById(req.params.productId).populate('storeId').exec().then(function (cake) { + res.send(cake); + }); +}); +router.get('/filling/:productId', function (req, res, next) { + FillingModel.findById(req.params.productId).populate('storeId').exec().then(function (filling) { + res.send(filling); + }); +}); -router.get('/', function (req, res, next) { - StoreModel.find().exec().then(function (storeArr) { - res.send(storeArr); +router.get('/icing/:productId', function (req, res, next) { + IcingModel.findById(req.params.productId).populate('storeId').exec().then(function (icing) { + res.send(icing); }); -}); \ No newline at end of file +}); + + + +// router.get('/', function (req, res, next) { +// StoreModel.find().exec().then(function (storeArr) { +// res.send(storeArr); +// }); +// }); \ No newline at end of file diff --git a/server/app/routes/storeCreate/index.js b/server/app/routes/storeCreate/index.js index 85e364b..60a37e1 100644 --- a/server/app/routes/storeCreate/index.js +++ b/server/app/routes/storeCreate/index.js @@ -37,14 +37,14 @@ var createDefaults = function(storeId) { {name: 'Rectangle', description: 'Rectangle Cake Shape Description', storeId: storeId }]; var fillingArr = [ - {name: 'Chocolate', description: 'Chocolate description', price: 20, storeId: storeId }, - {name: 'Vanilla', description: 'Vanilla description', price: 30, storeId: storeId }, - {name: 'Strawberry', description: 'Strawberry description', price: 40, storeId: storeId }]; + {name: 'Chocolate Filling', description: 'Chocolate description', price: 20, storeId: storeId }, + {name: 'Vanilla Filling', description: 'Vanilla description', price: 30, storeId: storeId }, + {name: 'Strawberry Filling', description: 'Strawberry description', price: 40, storeId: storeId }]; var icingArr = [ - {name: 'Chocolate', description: 'Chocolate description', price: 5, storeId: storeId }, - {name: 'Vanilla', description: 'Vanilla description', price: 10, storeId: storeId }, - {name: 'Strawberry', description: 'Strawberry description', price: 15, storeId: storeId }]; + {name: 'Chocolate Icing', description: 'Chocolate description', price: 5, storeId: storeId }, + {name: 'Vanilla Icing', description: 'Vanilla description', price: 10, storeId: storeId }, + {name: 'Strawberry Icing', description: 'Strawberry description', price: 15, storeId: storeId }]; var seedData = function(model, array) { return model.create(array);