ユーザーが言語変換要求を送信するスキーマ設計があります。翻訳要求文書はユーザ文書を参照し、プロパティは「_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);
Mongooseのソースコードでデバッグした後、登録されていたUserスキーマが2回目の実行時になくなったことがわかりました。どのようにして登録されたモデルが消えたのですか?モンゴースをここで間違って使用していますか? – jiminssy