質問

Mongooseクエリから結果(オブジェクト)を取得し、オブジェクトを文字列化してクライアントに送信する前に、キーを置き換えたり削除したりします。

オブジェクトを登録するときは、すべてがいい(すべてのキーがリストされています)。私がオブジェクトの中で。彼らは意味があります - 彼らはMongooseに属しています - しかし、私はそれらを望みません。オブジェクトのObject.KeysまたはObject.getownPropertynamesを使用するときに同じことが発生します - 非表示フィールドポップアップ、なしでは便利です。

では、util.inspect(obj、true、null、true)を使用して要素を検査し、結果をコンソールに記録します。コンソールの結果は同じであるかのように、検査なしでオブジェクトを直接ログインしました。

今、2つの質問

  1. オブジェクトの内部/隠し情報を実際に取得するには、オブジェクトを正しく調べますか?
  2. オブジェクトを繰り返し、フィールドを取得するだけですか? (はい、私はfor.inループ内でhasownPropertyチェックをしています)

    //編集

    OK、私はそれを手に入れました。いくつかの調査後、Mongooseオブジェクトがそのプロパティをプロキシし、TOJSON機能を持っていたことに気付きました。解決策は、Mongoose自身のToObjectメソッドを使用することです。

    mongooseObj.toObject({ getters: true, virtuals: false })
    
    .

    このように、私はObject.getownPropertyNamesを繰り返すことができ、キーを置き換えてください。

役に立ちましたか?

解決

I'm going to guess that you're looking at the Document object returned by a mongoose query when you really just want to see the data. If my guess is correct, you'll probably want something like this:

Model.findOne({ name: 'john' }, function (err, doc) {
    var data = doc.toObject();

    // do whatever you need to with data
    delete data.age;
    delete data.weight;
    data.isAwesome = true;

    // now stringify the data and do something with it
    callback(JSON.stringify(data));
});

他のヒント

Also if you want to access a certain field from a Document you can take a look at:

Document#get

// path
doc.get('age') // 47

// dynamic casting to a string
doc.get('age', String) // "47"
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top