я новичок в mean.js, так что это может быть просто неправильный синтаксис, но когда я использую model.find() с запросом внутри (option.find({poll_id:1}), он возвращает пустой массив.
опрос.сервер.модель.js
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Poll Schema
*/
var PollSchema = new Schema({
poll_id: {type:Number},
user_id: {type:Number},
poll_question: {type:String},
poll_language: {type:String},
poll_description: {type:String},
poll_description_raw: {type:String},
poll_weight_additional: {type:Number},
poll_flag_active:{type:Number,default:1},
poll_flag_18plus:{type:Number,default:0},
poll_flag_expire:{type:Number,default:0},
poll_flag_deleted:{type:Number,default:0},
poll_flag_moderated:{type:Number,default:0},
poll_flag_favourised:{type:Number,default:0},
poll_date_expiration:{type:Date},
poll_date_inserted:{type:Date,default:Date.now()},
poll_flag_updated:{type:Date},
show_thumbs:{type:Number},
comments:{
type: Schema.ObjectId,
ref: 'User'
}
});
mongoose.model('Poll', PollSchema);
option.server.model.js
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Option Schema
*/
var OptionSchema = new Schema({
option_id:{type:Number},
poll_id:{type:Number},
option:{type:Number}
});
mongoose.model('Option', OptionSchema);
опросы.server.controller.js
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
errorHandler = require('./errors.server.controller'),
Poll = mongoose.model('Poll'),
Option = mongoose.model('Option'),
_ = require('lodash');
/**
* List of Polls
*/
exports.list = function(req, res) {
Poll.find().limit(10).sort('_id')/*.populate('user', 'displayName')*/.exec(function(err, polls) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
for (var i=0; i < polls.length; i++) {
// this works, returns an array with 10 items
Option.find().exec(function(err,docs){
console.log(docs);
});
// this doesnt! although i see in the former array that there are options
// with the poll_id set to 1.
Option.find({'poll_id':1}).exec(function(err,docs){
console.log(docs);
});
}
res.json(polls);
}
});
};
Что я делаю не так? Я просмотрел его, но я не вижу ни одного поста, относящегося к моей проблеме. я пытался использовать model.find().where('poll_id').equals(1) с кавычками и без них, но ничего. когда я запускаю model.find(), он работает, но независимо от того, как я пытаюсь его отфильтровать, он возвращает пустой массив. заранее спасибо!
res.json
, что означает, что сервер отвечает на запрос клиента до завершения выполнения первого цикла. Вам нужно реструктурировать код. Я бы посоветовал взглянуть на библиотекуasync
. - person srquinn   schedule 09.12.2014