我正在制作一个角度应用程序,它为用户提供了管理项目的可能性。我有nodeJS&表达serveide和MongoDB作为我的数据库。
我想实现,用户可以将媒体(16MB以下的图像,因此不需要使用GridFS)上传到他们的项目中,并且可以显示哪个项目,附加了哪些媒体。
我没有得到图像,也没有错误。如何将project_Id
从角度传递到我的路线,以找到附加到项目中的媒体?这种方式是尝试POST并以正确的方式获取媒体吗?
项目和媒体模型:
var mediaSchema = mongoose.Schema({
media : {data: Buffer, contentType: String},
project_id : String,
updated_at : {type: Date, default: Date.now }
});
var projectSchema = mongoose.Schema({
author : String,
name : String,
description : String,
tags : String,
updated_at : {type: Date, default: Date.now },
active : {type: Boolean, default: false}
});
路由
var Media = require('./models/media.js');
//GET all the media
app.get('/uploads/', function(req, res, next){
Media.find(function (err, media){
if (err) return next (err);
res.json(media);
});
});
//GET one item
app.get('/uploads/media/:projectId', function(req, res, next){
Media.findOne(req.params , function (err, media){
if (err) return next (err);
res.json(media);
});
});
管理上传
app.use(multer({ dest: './uploads/',
rename: function (fieldname, filename) {
return filename+Date.now();
},
onFileUploadStart: function (file) {
console.log(file.originalname + ' is starting ...')
},
onFileUploadComplete: function (file) {
console.log(file.fieldname + ' uploaded to ' + file.path)
done=true;
}
}));
var Media = require('./app/models/media.js');
//POST media to the upload directory
app.post('/uploads/', function(req, res){
if(done==true){
Media.create(req.body, function(err, post){
console.log(req.files);
res.end('File uploaded');
});
}
});
角度控制器
var app = angular.module('myApp', []);
app.controller('projectCtrl', function($scope, $http) {
$scope.myVar = false;
$scope.toggle = function() {
$scope.myVar = !$scope.myVar
};
$http.get('/profile/project/').then(function (res){
$scope.projects = res.data;
});
//GET Media
var projectId = {{projects._id}};
$http.get('/uploads/media' + projectId).succes(function(data){
console.log('Medien-Daten erhalten');
$scope.media = data;
});
});
来自德国的亲切问候, 大卫
更新(新错误)
尝试实施解决方案,我的示波器出现问题。当我为媒体添加$ http.get时,我的其他范围似乎没有获取数据......它们显示如下:
更新2(范围错误已修复)
修复了控制器中的错误。我没有为projectId定义var,导致错误。 管理以使GET请求正常工作,我的应用程序正在查找数据库中的条目。但我无法看到任何......
答案 0 :(得分:1)
在get all函数中使用.find
不正确。
请参阅http://mongoosejs.com/docs/api.html#query_Query-find
Media.find({}, function (err, media){
if (err) return next (err);
res.json(media);
});
这将返回所有文件。