1
我试图从mongodb数据库中取出其_id
的对象,并将其放在$scope
中供以后使用。但是,当我尝试这样做时,我会获取数据库中的所有对象,而不是我请求的对象。我是新来的平均堆栈,不明白我做错了什么。使用AngularJS消费REST API
如果您有任何进一步的问题,请让我知道。
server.js
var express = require('express'),
app = module.exports = express(),
bodyParser = require('body-parser'),
mongoose = require('mongoose'),
productsController = require('./server/controllers/products-controller');
mongoose.connect('mongodb://localhost:27017/mean-demo');
app.use(bodyParser());
app.get('/', function (req, res) {
res.sendfile(__dirname + '/client/views/index.html');
});
app.get('/product/*', function (req, res) {
res.sendfile(__dirname + '/client/views/index.html');
});
app.use('/js', express.static(__dirname + '/client/js'));
app.use('/css', express.static(__dirname + '/client/css'));
app.use('/images', express.static(__dirname + '/client/images'));
app.use('/views', express.static(__dirname + '/client/views'));
//REST API
app.get('/api/products', productsController.products);
app.get('/api/products/:productId', productsController.product);
app.listen(3000, function() {
console.log('I\'m Listening...');
});
app.js
var app = angular.module('productApp', ['ngResource', 'ngRoute']);
app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: '/views/productsoverview.html',
controller: 'productsController'
})
.when('/product/:productId', {
templateUrl: '/views/productFocus.html',
controller: 'productFocusController'
})
.otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true)
}]);
app.controller('productsController', ['$scope', '$resource',
function($scope, $resource) {
var Product = $resource('/api/products');
$scope.products = [];
Product.query(function (results) {
$scope.products = results;
});
}]);
app.controller('productFocusController', ['$routeParams', '$scope', '$resource',
function($routeParams, $scope, $resource) {
var Product = $resource('/api/products/:productId',{productId:'@productId'});
Product.productId = $routeParams.productId;
console.log(Product.productId);
Product.query(function (result) {
console.log(result);
$scope.product = result;
});
}]);
的ProductsController
var Product = require('../models/product');
exports.products = function (req, res) {
Product.find({}, function (err, results) {
res.json(results);
});
};
exports.product = function (req, res) {
Product.findOne({_id:req.params.productId}, function (err, obj) {
res.json(obj);
});
};
当你注释掉顶部功能,并添加了某种错误处理程序返回的错误类型第二? – Pytth 2014-09-28 18:08:19
如果您需要使用Product.get({productId:123},function(value){do something}),您可以使用'Product.query'来获取所有对象' – snies 2014-09-28 18:30:11