• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

sub schema 업데이트 방법 질문합니다.

22.01.13 01:41 작성 조회수 213

0

const permissionSchema = new Schema({
    page: { type: String },
    permitted_users: [{
      type: mongoose.Schema.Types.ObjectId,
      ref: "User",
    }],
});

const appSchema = new Schema({
    name: { type: string },
    permissions: [permissionSchema],
});

const userSchema = new Schema({
    email: { type: string },
    name: { type: string },
});

 

안녕하세요. 위의 스키마는 대략적인 필드만 나타낸 예시입니다. 여기서 파라미터(app_id, permission_id, user_id)를 클라이언트에서 받아서 permitted_users에 받은 user_id를 추가해주는 작업을 해주고 있습니다. (DB에 저장도 잘 됩니다.)

현재 controller와 service가 분리되어 있어서 controller에서 서비스로 addPermittedUser를 호출하면 업데이트된 결과를 받고 싶은데 어떻게 받아야할지 잘 모르겠습니다... 

async와 await을 사용해서 return 도 해보았는데, MongooseError: Query was already executed 오류가 계속 발생해서 해결을 하지 못하고 있습니다...

// permissionService - addPermittedUser
exports.addPermittedUser = async (options) => {
  const {app_id, permission_id, user_id } = options;

  App.findById(app_id, (error, app) => {
    if (error) {
      console.log(error);
    }
    app.permissions.id(permission_id).permitted_users.push(user_id);
    app.save();
  });
};

접근 방향을 알려주실 수 있을까요?

답변 1

답변을 작성해보세요.

0

업데이트는 되는데 컨트롤러에서 return 값을 못 받고 계신 건가요?

const app = await App.findById(app_id);
app.permissions...(user_id);
return app.save();

하시면 안 되나요?