如何在 typescript 中使用 mongoose 在 mongodb 中插入数据?
Posted
技术标签:
【中文标题】如何在 typescript 中使用 mongoose 在 mongodb 中插入数据?【英文标题】:How to insert data in mongodb using mongoose in typescript? 【发布时间】:2021-10-04 23:06:34 【问题描述】:我已经为 crud API 实现了一个打字稿代码,但目前,我在使用 mongoose 包使用 API 插入数据时遇到了一个问题。由于我的数据库是 MongoDB,所以我使用了这个包。
import Transaction from 'mongoose-transactions-typescript';
我正在做打字稿项目,所以我使用了这个包
public async createAffiliateUser(res_data: any)
console.log("Function");
const transaction = new Transaction();
console.log("Function123");
const AffiliateUserModelName = 'affiliateusers'; // COLLECTION name
console.log(res_data);
await transaction.insert(AffiliateUserModelName,
name: res_data.name,
userName: res_data.userName,
groupId: res_data.groupId,
commissionCount: res_data.commissionCount,
commissionAmount: res_data.commissionAmount,
is_active: res_data.is_active
);
return await transaction.run();
在上面的代码中突出显示的行会抛出这样的错误
TypeError:mongoose_transactions_typescript_1.default is not a constructor
在上面的函数中,当我尝试使用猫鼬的默认创建方法时,即使传递如下完整数据,它也只插入单列数据
"name": "Test",
"userName":"test123",
"groupId": "1",
"commissionCount": 1,
"commissionAmount": 2,
"is_active": true
如果有人知道如何使用打字稿或上述问题的解决方案在 MongoDB 中插入数据,那么请帮我解决这个问题?
谢谢
【问题讨论】:
如果你改用import Transaction from 'mongoose-transactions';
会发生什么?
@EzraChang 也抛出了同样的错误
【参考方案1】:
我不知道你为什么是这个代码结构为了使用猫鼬。
为了在 mongoose 中正确使用 mongodb 文档,我遵循的步骤如下:
-
像这样创建一个猫鼬模型架构:
// I usually like create this file in a database folder
import mongoose, Document, Model from "mongoose";
const Schema = mongoose.Schema;
// creating the actual mongoose schema
const UserSchema = new Schema(
firstName:
type: String,
,
lastName:
type: String,
,
username:
type: String,
,
lang:
type: String,
default: "it",
,
,
timestamps: true
);
// exporting the type in order to have all the correct linting
export interface IUser extends Document
id: string;
firstName: string;
lastName?: string;
username?: string;
createdAt: Date | number;
updatedAt: Date | number;
// registering in mongoose models the schema with the relative interface
const User =
(mongoose.models.User as Model<IUser>) ||
mongoose.model<IUser>("User", UserSchema);
export default User;
此时让我们假设你有一棵类似这样的树:
root_folder
|-- database
| |-- User.ts
|
|-- controllers
|-- addUser.ts
-
在集合中创建文档:
import User from "../../database/User.ts"
async function addUser()
const newUser = await new User(firstName: "foo", lastName: "bar", username:"testUser").save()
现在您应该在用户集合中拥有新文档
【讨论】:
以上是关于如何在 typescript 中使用 mongoose 在 mongodb 中插入数据?的主要内容,如果未能解决你的问题,请参考以下文章
将 2 列中的 json 数据与模式中的数据进行比较,并将最新数据覆盖为 mongoos 中的主要数据
如何在 Vue (Typescript) 中使用 axios?
如何在 TypeScript 中使用 RequestPromise?