无法解决问题。
我的API是在我的一个路由的数组下发送整个对象,尽管它在模式上与另一个返回对象的路径相同。
唯一的区别是一个使用FindById,但另一个使用额外的$ eq来搜索对象中的特定字段以匹配。
FindById返回我的对象正常但是那个使用$ eq的对象将它返回到数组中。他们的模式是相同的。这只是我必须处理的特质吗?
apiRouter.get('/accts/:acct_id', function(req, res) {
Acct.find( ({ acct_id: { $eq: req.params.acct_id } } ), function(err, acct) {
if (err) res.send(err);
res.json(acct);
});
});
apiRouter.route('/users/:user_id')
// get the user with that id
.get(function(req, res) {
User.findById(req.params.user_id, function(err, user) {
if (err) res.send(err);
// return that user
res.json(user);
});
})
控制器绑定数据。
.controller('acctView', function($routeParams, Acct) {
var vm = this;
// set a processing variable to show loading things
vm.processing = true;
Acct.get($routeParams.accts_id)
.success(function(data) {
vm.processing = false;
vm.accts = data;
});
});
我最终不得不使用acct.accts[0].acct_id
以角度访问我的对象,而我的所有其他页面都不会将对象作为额外数组接收。
架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// acct schema
var AcctSchema = new Schema({
acct_id: String,
acct_name: String,
acct_address_1: String,
acct_address_2: String,
acct_address_city: String,
acct_address_state: String,
acct_address_zip: Number,
acct_address_country: String,
recipients: [],
notes: {
dist: String,
misc: String
}
});
module.exports = mongoose.model('Acct', AcctSchema);