2016-06-13 7 views
0

ユーザーが言語変換要求を送信するスキーマ設計があります。翻訳要求文書はユーザ文書を参照し、プロパティは「_requester」および「_translator」と呼ばれます。私は、翻訳依頼の収集に関するいくつかのクエリを実行する際に、これらのデータを入力できるようにしたいと考えています。特定のクエリを実行して_translatorを生成し、結果が完璧に見えるときに問題が発生します。それから私は全く同じクエリを行う場合は、エラーメッセージがと言って2回目に失敗しますモデル "ユーザー"のスキーマが登録されていません。スキーマが登録されていない状態でMongooseが2回目にエラーをスローする

これは私のコードでどのようにコード化されているかです。 2つのファイルがあります。 mongooseが座っている1つのjsファイルと、依存関係注入のようなモデルを使っている別のjsファイル。

(マングース-util.js)

function MongooseUtil(){ 
    var mongoose = require('mongoose'); 
    var mongoosePaginate = require('mongoose-paginate'); 
    var Schema = { 
     User: { 
      userId: String, 
      password: String, 
      nickName: String, 
      state: String, 
      emailVerificationCode: String, 
      avatarUrl: String, 
      points: Number 
     }, 
     TranslationRequest: { 
      _requester: { type: mongoose.Schema.ObjectId, ref: "User" }, 
      _translator: { type: mongoose.Schema.ObjectId, ref: "User" }, 
      to: String, 
      from: String, 
      textToTranslate: String, 
      translatedText: String, 
      state: String, 
      requestedTime: Number, 
      translatedTime: Number, 
      gradedTime: Number, 
      grade: Number, 
      requesterUserId: String, 
      translatorUserId: String, 
      graderUserId: String 
     } 
    }; 

    // user 
    var userSchema = mongoose.Schema(Schema.User); 
    var userModel = mongoose.model('User', userSchema); 

    // translation request 
    var translationRequestSchema = mongoose.Schema(Schema.TranslationRequest); 
    translationRequestSchema.plugin(mongoosePaginate); 
    var translationRequestModel = mongoose.model('TranslationRequest', translationRequestSchema); 

    this.getUserModel = function(){ 
     return userModel; 
    } 

    this.getTranslationRequestModel = function(){ 
     return translationRequestModel; 
    } 
} 

module.exports = new MongooseUtil(); 

(翻訳依頼service.js)

function TranslationRequestService(){ 
    var mongooseUtil = require('../../../utils/mongoose-util/mongoose-util'); 
    var TranslationRequest = mongooseUtil.getTranslationRequestModel(); 
    var _this = this; 

    this.getTranslationResultById = function(id){ 
     return TranslationRequest.findOne({ _id: id }) 
      .populate('_translator', 'nickName avatarUrl') 
      .exec(); 
    } 
} 

module.exports = new TranslationRequestService(); 

(ハンドラが使用されている方法)

// following lines are executed twice by user's repeated action on UI 
var service = require('./translation-request-service); 
service.getTranslationResultById(id); 
+0

Mongooseのソースコードでデバッグした後、登録されていたUserスキーマが2回目の実行時になくなったことがわかりました。どのようにして登録されたモデルが消えたのですか?モンゴースをここで間違って使用していますか? – jiminssy

答えて

0

返された結果を直ちに複製してロジックを実行することで問題を解決しました。私はまだ何が問題を引き起こしたのか分からない。私がやっているのは、人口の多い結果を私のWebソケットからクライアントに渡すことだけです。

関連する問題