07 ~ 13.Dec.2020

7709 ワード

#12月第2週目
さぎょう
APIは初めて実装され、簡単に導入され、フロントに伝達されます.
途中で既存のサービスコードを2つ程度修正する必要があり、スケジュールが遅れる可能性があります.
名学習
アルゴリズム学習は週3日から今週から始まります.毎週8つの問題を解いて一緒に討論する方法.

7日


#TODOは特に何もなく、API実現の継続である.来週までに、実施、完備、実施、完備を計画する.

Joi library - enum value


パラメータ検証にはJoiライブラリを使用しています.使い方が簡単すぎて、書くときに書くこともあまりありません.書けるものが出てきました
parameterとしての値がいくつか欲しい場合はどうすればいいですか?パターンを定義します(enum値の場合はどうすればいいですか)!.valid()でいいです.
const schema = Joi.object().keys({
  type: Joi.string().valid('value1', 'value2'),
});
or
const SomeEnumType = { TypeA: 'A', TypeB: 'B' };

const schema = Joi.object().keys({
  type: Joi.string().valid(...Object.values(SomeEnumType)),
});

const myObj = { type: 'none' };
const result = Joi.validate(myObj, schema);

一日を終える


私もこっそり計画を増やしています.これはあるべき機能で、私は従います.やるべきことが多すぎる.

8~13日


#TODOは昨日一時停止したAPIの実現を再開した.スケルトンは今日完成する見込みです.完了後、緊急TODOチェックから行います.

APIスケルトンの80%が完了するには、十分な時間しかかかりません。


漏れたものがどれくらいあるかはわかりませんが、全体の骨格は完成しています.しかし、明日からじっくり観察すると、多くの箇所が漏れてしまうと予想されます.
しかし、総じて言えば、コードがどの方向に発展すべきかは確定しているので、コードを書くときはあまり悩まないはずです.困ったことは今解決した.これは時間の争いだ.

mongoose.find()メソッドは、ドキュメントを返します。jsはオブジェクトを渡さない。


#質問
.find()で受信したオブジェクトは変更できません.
#解決
javascript objectを返すと思っていましたが、そうではありません.ずっと内容を追加していなかったので、1時間挿したようです.混同の原因は
const DocumentA = await ModelA.find();

DocumentA.a = 'aaa';
console.log(DocumentA.a) // 'aaa'
//  이렇게 'aaa'가 출력된다. 
// 이것때문에 "document 수정이 가능하구나~" 하고 계속 다른 방법들을 찾아봤던 것이다.

ctx.response.body = {
  DocumentA;
// 그런데 정작 통째로 전달하면 documantA.a 가 사라져버린다.
もう一度探してみると、イタチだった.find()メソッドは純粋なJavaScriptオブジェクトではなくモンゴルDBドキュメントを渡す.ドキュメントなので修正できません.
「修正を可能にするには、find().lean()のようにlean()を貼付する必要があります.」leanを使うと、オブジェクトに変換して伝えられます.

subdocument update


#質問
const UserSchema = new mongoose.Schema({
    // Signup Datas
    subDocument: [Subdoc],
});
上記のモデルで特定のサブドキュメントを変更すると、サブドキュメントのidを変更するたびに、サブドキュメントのidが変更されます.idはユニークではありません.
#解決1
Subdocument _id's are not type ObjectIds, they're standard type String. Mongo automatically generates a dynamic string id for these subdocs everytime they're created or modified. You should think about migrating your sub-documents (Addresses) to their its own Model if you want static _id's that do not change upon an update. Then use a Model Reference with the ObjectId type, on the User schema definition. Then when calling User.update(), populate the subdocument content, from its model Reference name Address and filter by _id to modify the target Address doc
簡単に言えば、「SubDocumentのidはオブジェクトIDではありません.String値にすぎません.MongoDBは、サブドキュメントの作成と変更のたびにidを変更します.idを変更しない場合は、サブDocから独立したモデルに変換することをお勧めします.」
#解決2
idを変更せずにsubDocsとして保持する場合は、変更するたびにsubdocに格納されているidが一緒に渡される限り、同じidを保持できます.

1週間で終わる


ああ...仕事が多すぎる~多すぎる~二人でやろうと思っていたことは一人でやっていたので、週末も夜もやっていませんでした.
しかし、个人的な勉强を放弃することはできませんので、毎日1つの试験问题をするつもりです.学習グループもしました.