28

私はこのようなオブジェクトを持っています

==================records=========={ Id: 5114a3c21203e0d811000088,
  userId: 'test',
  sUserId: test,
  userName: 'test',
  url: 'test',
  Title: 'test'
}

新しいフィールドName : 'test'を上記のレコードに追加する必要があります。records.Name = name を指定しようとしましたが、うまくいきませんでした。

助けてください

ありがとう、プラッツ

4

7 に答える 7

13

この問題を見つけた人、OP は元の質問の下のコメントで、この問題の解決策は次のとおりであると述べました。

records.set('Name', 'test')

Nameこれにより、 having valueという新しい属性が追加されますtest

于 2013-12-11T20:29:11.720 に答える
6

私も同様の問題を経験しました。私の何時間もの実存的な欲求不満が、同じ状況にある他の人を助けることを願っています. 私の傾向としては、Mongoose 経由で返されたドキュメントは読み取り専用であると考えていました。これは実際には正しくありません。

ただし、スキーマにもないプロパティをドキュメントに割り当てることはできません。

したがって、スキーマに次のものが含まれていない限り:

{
    Name: {String}
}

ドキュメントに名前を割り当てようとすると、常にイライラします。

さて、上記の回答には回避策があり、それは私にも役立ちましたが、問題の根本には到達しません。

myDocument.toObject();
JSON.parse(JSON.stringify(myDocument);

これらは機能しますが、私の意見では、問題を隠しているだけです。本当の問題は、Mongoose が私たちが思っていたよりも賢く、スキーマを適切に適用していることです。

于 2016-06-08T22:31:16.640 に答える
-1

このオブジェクトを にロードした場合、またはrecordsの両方が機能します。オブジェクトが正しくロードされていないか、未定義の値が挿入されています。records.Name = "test"records['Name'] = "test"

テストするには: を追加console.log(records.userId)します。これにより、「test」が端末に出力されます。

また、追加しconsole.log(name)ます。が得られReferenceError: name is not definedた場合、明らかにできません:records.Name = name

于 2013-02-08T08:10:20.780 に答える