小编Inn*_*ve1的帖子

NestJS和Mongoose通过引用对象Id查找

我有 Mongo 用户集合和地址集合。每个地址都由一个用户拥有。这是我的架构类:


export type UserDocument = User & mongoose.Document
@Schema({ timestamps: true })
export class User {
  // @Prop({ type: mongoose.Types.ObjectId })
  _id: string

  @Prop({ required: true })
  name: string

  @Prop({ required: true, unique: true })
  email: string

  @Prop({ select: false })
  password: string

}
export const UserSchema = SchemaFactory.createForClass(User)

export type AddressDocument = Address & Document
@Schema({ timestamps: true })
export class Address {
  @Prop({ type: mongoose.Schema.Types.ObjectId, ref: User.name })
  user: User

  @Prop()
  line1: string

  @Prop()
  line2?: string …
Run Code Online (Sandbox Code Playgroud)

mongoose typescript nestjs

17
推荐指数
2
解决办法
3万
查看次数

Typescript hasOwnProperty等价

在javascript中如果我想循环遍历字典并设置另一个字典的属性,我会使用这样的东西:

for (let key in dict) {
  if (obj.hasOwnProperty(key)) {
    obj[key] = dict[key];
  }
}
Run Code Online (Sandbox Code Playgroud)

如果obj是Typescript对象(类的实例),有没有办法执行相同的操作?

javascript object typescript typescript1.8

16
推荐指数
2
解决办法
3万
查看次数

Android Studio未解析参考.项目编译

升级Android Studio后,一个没有问题的项目开始在编辑器中显示问题.我有很多Unresolved Reference错误.支持库下的任何内容(support-v4,support-v7).

在此输入图像描述

在上面的屏幕截图中,任何显示为红色的内容都不会解析并显示为错误.我也在使用Lifecycle组件和Room数据库.他们似乎也有问题.看起来可以找到接口,但类不能.

例如,在我的一个班级中使用Room,

android.arch.persistence.room.Databaseandroid.arch.persistence.room.TypeConverters正确解决,但是

android.arch.persistence.room.Room并且android.arch.persistence.room.RoomDatabase不.

在此输入图像描述

注意:该项目在Android模拟器和设备上构建并运行良好,没有任何问题.它使用Android Studio上的构建按钮构建和运行,没有任何错误.我没有收到任何Class not found错误.这只是Android Studio编辑器中的一个问题.我已经重新启动了Android Studio,清理并重建了项目.

这是我的项目构建文件:

buildscript {
  ext.kotlin_version = '1.2.70'
  ext.serialization_version = '0.6.2'
  ext.gradle_plugin_version = '3.2.0'

  repositories {
    google()
    jcenter()
    maven { url "https://jitpack.io" }
    maven { url "https://kotlin.bintray.com/kotlinx" }
  }
  dependencies {
    classpath "com.android.tools.build:gradle:3.2.1"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "org.jetbrains.kotlinx:kotlinx-gradle-serialization-plugin:$serialization_version"
  }
}

allprojects {
  repositories {
    google()
    jcenter()
    maven { url 'https://jitpack.io' }
    maven { url "https://kotlin.bintray.com/kotlinx" }
  }
}

task clean(type: …
Run Code Online (Sandbox Code Playgroud)

android unresolved-external kotlin android-studio

10
推荐指数
3
解决办法
1万
查看次数

Android EditText错误消息弹出文本未显示

我在我的应用程序中遇到问题,其中EditTexts上的错误弹出显示但文本不可见.它看起来像这样:

EditText错误消息

EditText我的应用程序中的所有s都会发生这种情况.这是一个布局XML的示例

布局:

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient"
    android:fitsSystemWindows="true"
    tools:context=".ui.onboarding.profile.OnboardingUserProfileActivity">
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        app:srcCompat="@drawable/shapes_background" />

    <ProgressBar
        android:id="@+id/login_progress"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:visibility="gone" />

    <ScrollView
        android:id="@+id/form"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="20dp">

        <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="80dp"
            android:orientation="vertical">

            <android.support.constraint.ConstraintLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="40dp"
                android:layout_marginBottom="20dp">

                <ImageView
                    android:id="@+id/profileImageView"
                    android:layout_width="160dp"
                    android:layout_height="160dp"
                    android:scaleType="fitXY"
                    android:src="@drawable/user_profile_placeholder"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"/>


                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/cameraImageButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom|end"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintRight_toRightOf="parent"
                    app:srcCompat="@android:drawable/ic_menu_camera" />
            </android.support.constraint.ConstraintLayout>

            <android.support.design.widget.TextInputLayout
                android:id="@+id/firstnameTvLayout"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_marginBottom="20dp"
                android:layout_weight="0.33"
                android:textColorHint="@color/colorVeryLightGray"
                android:theme="@style/AppTheme.WhiteColorAccent" …
Run Code Online (Sandbox Code Playgroud)

android android-layout kotlin android-textinputlayout android-textinputedittext

6
推荐指数
1
解决办法
1267
查看次数

Android工作室外部库项目

我正在从Eclipse迁移到android studio,这是我在eclipse中的设置:我有几个Android应用程序项目,这取决于一个工作区内的几个库项目(一些共享).在Android工作室中,我首先开始为每个应用程序创建一个项目,但很快意识到我必须将库项目作为每个项目中使用它们的模块.这意味着复制库项目并将它们包含在每个应用程序中,这是高度冗余的,并且需要维护库的多个副本.

所以我切换到将所有应用程序和库作为同一项目中的模块.这适用于构建,但会产生其他问题,例如版本控制问题,因为每个模块都位于单独的版本控制存储库中.

这种设置最简洁的方法是什么?真正的问题是,我可以在AS中拥有共享相同外部库项目的单独项目吗?

eclipse android project android-studio

5
推荐指数
1
解决办法
2103
查看次数

使用AlarmManager启动活动时,MediaPlayer不会播放

我正在编写一个警报(kinda)应用程序,它使用带有RTC_WAKEUP标志的AlarmManager注册广播意图,以便在指定时间关闭.作品...

当接收到广播时,接收器使用STREAM_ALARM流启动与MediaPlayer播放铃声的活动,并执行其他一些操作.一切正常,但如果在屏幕关闭时收到广播,则活动会正确启动,但铃声不会播放.工作正常并在屏幕打开和解锁时收到铃声.

编辑在播放铃声的活动中添加代码.

public void onCreate(Bundle bundle) {
    super.onCreate(bundle)
    ...
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    ringtonePlayer = new MediaPlayer();
    ...
    playRingtone();
}

private void playRingtone() throws IllegalArgumentException, SecurityException,      IllegalStateException, IOException {
    ringtonePlayer.setDataSource(prefs.getString(getRingTone(), RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE).toString()));

    ringtonePlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
    ringtonePlayer.setWakeMode(this, PowerManager.PARTIAL_WAKE_LOCK);
    ringtonePlayer.setLooping(true);
    ringtonePlayer.prepare();
    ringtonePlayer.start();
    Log.i(LOG_TAG, "Ringtone started");
}
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver alarmmanager android-mediaplayer

1
推荐指数
1
解决办法
804
查看次数

Angular2:'...'的路由生成器未包含在传递的参数中

我在使用Angular2路线时遇到了麻烦.我有几个级别的嵌套.这是我的设置:我为未经身份验证的用户提供了最高级别的路由.登录后,他们就在/my路线下.在那个级别上,他们有一个仪表板,可以将它们带到/my/projects/关卡.路由下projects需要id.设置细节如下.这是最高级别AppComponent:

 @RouteConfig([
  {path: '/home', name:'Home', component: HomeComponent, useAsDefault: true},
  {path: '/login', name: 'Login', component: LoginComponent},
  {path: '/signup', name: 'SignUp', component:SignUpComponent},
  {path: '/my/...', name: 'MyApp', component: MyAppComponent}
])
export class AppComponent {
  constructor(private router: Router) {

  }
Run Code Online (Sandbox Code Playgroud)

经过身份验证后,用户将转到MyAppComponent,其设置如下:

 @RouteConfig([
  {path:'/dashboard', name: 'MyDashboard', component: DashboardComponent, useAsDefault: true},
  {path: '/projects/...', name: 'MyProjects', component: ProjectRootComponent},
])

export class MyAppComponent {

  constructor(private router: Router) {
  }
}
Run Code Online (Sandbox Code Playgroud)

DashboardComponent:

export class DashboardComponent {
  public projects: Array<Project>;
  public loaded: …
Run Code Online (Sandbox Code Playgroud)

routing angular2-routing angular

1
推荐指数
1
解决办法
2058
查看次数

Angular2 v3组件路由器:TypeError:无法读取未定义的属性"split"

我最近将我的angular2应用程序从RC路由器切换到v3路由器.我收到了错误

TypeError: Cannot read property 'split' of undefined
    at match`. 
Run Code Online (Sandbox Code Playgroud)

在路由器上启用跟踪以获取调试输出后,看起来错误的来源来自路由器:

NavigationError {id: 2, url: "/my/workspace/1252407935628215305/projects", error: TypeError: Cannot read property 'split' of undefined
    at match - common_router_providers.js:28 NavigationError {id: 2, url: "/my/workspace/1252407935628215305/projects", error: TypeError: Cannot read property 'split' of undefined
    at match (http://localhost:8080/vendor.6a9d…}error: TypeError: Cannot read property 'split' of undefined
    at match (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74100:22)
    at matchPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74073:19)
    at expandPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74038:17)
    at expandPathsWithParams (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74020:21)
    at matchPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74085:23)
    at expandPathsWithParamsAgainstRoute (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74038:17)
    at expandPathsWithParams (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74020:21)
    at expandSegment (http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74010:17)
    at http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74014:84
    at http://localhost:8080/vendor.6a9dd9122cbbc98aa93a.js:74367:41message: "Cannot …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs typescript angular2-routing angular

1
推荐指数
1
解决办法
6179
查看次数

RxJava2如何在请求参数更改时更新现有订阅

我有一个活动,每次用户输入更改时我都会向其发出网络请求.

api定义如下:

interface Api {
  @GET("/accounts/check")
  fun checkUsername(@Query("username") username: String): Observable<UsernameResponse>
}
Run Code Online (Sandbox Code Playgroud)

然后是管理它的服务:

class ApiService {

  var api: Api

  init {
    api = retrofit.create(Api::class.java)
  }

  companion object {
    val baseUrl: String = "https://someapihost"
    var rxAdapter: RxJava2CallAdapterFactory = RxJava2CallAdapterFactory.create()
    val retrofit: Retrofit = Retrofit.Builder()
            .baseUrl(baseUrl)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(rxAdapter)
            .build()


}

  fun checkUsername(username: String): Observable<UsernameResponse> {
    return api.checkUsername(username)
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的活动中,每当EditText内容发生变化时,我都会进行此调用:

  private fun checkUsername(username: String) {
      cancelSubscription()
      checkUsernameDisposable = ApiService()
            .checkUsername(username)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe {
              updateUi(it)
      }
  }
Run Code Online (Sandbox Code Playgroud)

因此,每次输入变化时,这都会创建一个新的一次性用品.这显然是不正确的.我想要做的是使用新网络调用的结果更新现有订阅.

android rx-java retrofit2 rx-java2

1
推荐指数
1
解决办法
220
查看次数