Typescript在这行抱怨道:
user.posts.pull(postId);
我得到这个错误:
Property 'pull' does not exist on type 'PostDoc[]'
因为postId被接收为<code>req.params。postId</code>它是string类型,所以我将其转换为mongoose objectId,但仍然有相同的错误:
user.posts.pull(mongoose.Types.ObjectId(postId));
pull() 在猫鼬数组中工作。这行代码是我在javacsript中实现的。我正在将我的项目转换为打字稿。这是用户模型的用户界面和架构。
interface UserDoc extends mongoose.Document {
email: string;
password: string;
posts: PostDoc[];
name: string;
status: string;
}
const userSchema = new Schema({
email: { type: String, required: true },
password: { type: String, required: true },
name: { type: String, required: true },
status: { type: String, default: "I am a new user" },
posts: [{ type: Schema.Types.ObjectId, ref: "Post" }],
});
这里发布架构和界面
interface PostDoc extends Document {
title: string;
content: string;
imageUrl: string;
creator: Types.ObjectId;
}
const postSchema = new Schema(
{
title: {
type: String,
required: true,
},
imageUrl: {
type: String,
required: true,
},
content: {
type: String,
required: true,
},
creator: {
type: Schema.Types.ObjectId,
ref: "User",
required: true,
},
},
{ timestamps: true }
我遇到了一个类似的问题,无法正确键入子文档。为了保持DTO接口和模型接口的分离和强类型化,我建议您使用以下解决方案。这同样适用于您的PostDoc
。
interface UserDoc {
email: string;
password: string;
posts: PostDoc[];
name: string;
status: string;
}
export type UserDocModel = UserDoc & mongoose.Document & PostDocModel & Omit<UserDoc , 'posts'>
interface PostDocModel {
posts: mongoose.Types.Array<PostModel>;
};
对于< code>PostModel的mongoose数组,我们用Omit替换< code>posts: PostDoc[]属性,保持属性同步。来自https://stackoverflow.com/a/36661990的启示
通过这种方式,我们可以访问每个猫鼬数组方法,例如pull
、pop
、shift
等(https://mongoosejs.com/docs/api.html#Array)
const user = await this.userdocModel.findById(userId).exec();
user.posts.pull(postId);
const User = mongoose.model<UserDocModel>('User', userSchema);
export default User;
问题内容: 我正在使用swift构建RSS阅读器,并且需要实现pull来重新加载功能。 这是我试图做到的方式。 我正进入(状态 : super.init调用未初始化属性“ self.refresh” 请帮助我了解手势识别器的行为。一个有效的示例代码将有很大的帮助。 谢谢。 问题答案: 拉动刷新 是iOS内置的。你可以像这样迅速 在某些时候,您可能会刷新。
在 pull requests 使用“Work In Progress”标记 您可以通过在一个进行中的 pull request 的标题上添加前缀 WIP: 或者 [WIP](此处大小写敏感)来防止它被意外合并,具体的前缀设置可以在配置文件 app.ini 中找到: [repository.pull-request] WORK_IN_PROGRESS_PREFIXES=WIP:,[WIP] 列表
问题内容: 使用github webhooks,我希望能够将任何更改拉到远程开发服务器。此刻,在适当的目录中时,需要进行任何更改。但是,我不知道如何在Python中调用该函数。我尝试了以下方法: 但这导致以下错误 追溯(最近一次呼叫最近): init errread,errwrite中的文件“ /usr/lib/python2.7/subprocess.py”中的文件“”,行679, )“ / u
使用github webhooks,我希望能够对远程开发服务器进行任何更改。此时,在适当的目录中,将获得需要进行的任何更改。但是,我不知道如何从Python内部调用那个函数。我尝试了以下方法: 有没有办法让我从Python中调用这个bash命令?
我是Vault的新手。我正在尝试使用APPROLE作为身份验证方法将Vault与Spring引导集成。我的bootstrap.yml配置如下: 当我使用此配置运行时。我出错了 org.springframework.beans.factory。BeanCreationException:创建名为“vaultTemplate”的bean时出错,该bean在类路径资源[org/springframew
我做错了什么?