1

ドキュメントをコレクションに保存しましたが、findOne を介して取得しようとすると、間違った結果が返されます: 私の Mongoose モデルは次のようになります:

var db = require('../db');
var mongoose = db.mongoose_var;
var companySchema = mongoose.Schema({
companyName:String
});

module.exports = mongoose.model('Company',companySchema);

次に、server.jsで次のように使用しています:

var CompanySchema = require('./schemas/companySchema');

そして、次のように既に挿入されたレコードを見つけようとしているとき:

CompanySchema.findOne({'Company.companyName':jsonObj.companyName},function(err,companyName){
 console.log('companyName foudn:'+companyName);
 if(companyName !== null){
    res.status(404).json({status:'Name already in the DB'});
    return;
    }else{...

このレコードを見つけることができませんが、おそらく最初のレコードを返します。次のレコードが thedb に存在します。 ここに画像の説明を入力

別の会社を追加しようとしていて、この findOne を使用してこの名前が既に存在するかどうかを確認すると、findOne はこのレコードのみを返します。私のログスニペット

ここに画像の説明を入力

一方、mongo シェルは適切な結果のみを返します。

ここに画像の説明を入力

mongo シェルでは、findOne Api ではなく、フィールドと値の周りに " " を使用しています。前もって感謝します

4

1 に答える 1

0

おそらく次を使用する必要があります。

CompanySchema.findOne({'companyName':jsonObj.companyName},function(err,companyDocument){
if(err) console.log(err);
console.log('company found:' + companyDocument);
if(companyDocument){
res.status(404).json({status:'Name already in the DB'});
return;
}else{...

あなたのコードの間違いは、companyName の代わりにCompany.companyNameを使用していたことです。companyName は、Company コレクション内のフィールドの名前です。

これがお役に立てば幸いです。

于 2016-02-16T17:22:41.197 に答える