Я портирую свой проект на машинописный текст, и у меня возникают проблемы с моей схемой с полем с именем alias. Я получаю эту ошибку:

Types of property 'alias' are incompatible.
Type 'StringConstructor' is not assignable to type 'string'.ts(2345)

Я знаю, что это потому, что у мангуста есть поля псевдонимов (https://mongoosejs.com/docs/guide. html # aliases). У меня вопрос, как мне этого избежать?

Мой код для справки:

import mongoose, { Schema, Model } from 'mongoose';

const userSchema = new Schema({
  _id: Schema.Types.ObjectId,
  alias: String
});

Спасибо.

РЕДАКТИРОВАТЬ: это также не работает:

import mongoose, { Schema, Model } from 'mongoose';

const userSchema = new Schema({
  _id: Schema.Types.ObjectId,
  alias: {type: String, required: true}
});

С этой ошибкой:

Types of property 'alias' are incompatible.
Type '{ type: string; required: boolean; }' is not assignable to type 'string'.ts(2345)
0
wei 16 Дек 2019 в 04:00
 – 
Raheel
21 Янв 2021 в 22:30

1 ответ

Type 'StringConstructor' is not assignable to type 'string'.ts(2345)

Ошибка четко определяет, что:

Вы присваиваете Data Type поля псевдониму, но имя alias должно иметь имя, а не тип, который можно использовать для отображения этого поля с именем псевдонима.

Измените это:

alias: String

К

alias: "String" // <- это должно быть имя типа "user_id" или что-то вроде этого

0
Vivek Doshi 16 Дек 2019 в 10:40
Я думаю, что все еще существует конфликт с типом псевдонима, который уже существует в мангусте. Например, если я хочу сделать: alias: {type: String, required: true} или alias: {type: "String", required: true}, я все равно получаю сообщение об ошибке. Спасибо
 – 
wei
16 Дек 2019 в 18:23
Да, псевдоним - это зарезервированное ключевое слово для мангуста для псевдонима имени поля
 – 
Vivek Doshi
16 Дек 2019 в 18:25
Я так не думаю, вы должны использовать имя diff вместо этого
 – 
Vivek Doshi
16 Дек 2019 в 18:31
Должен быть способ. все работает нормально, если я делаю const mongoose = require('mongoose'). Однако, когда я делаю import mongoose from 'mongoose', это не работает. Это должно быть что-то с @ types / mongoose, и должен быть способ избежать этого
 – 
wei
16 Дек 2019 в 18:46