如何在打字稿中使用猫鼬在 mongodb 中插入数据?
How to insert data in mongodb using mongoose in typescript?
我已经为 crud API 实现了打字稿代码,但目前,我在使用 mongoose 包使用 API 插入数据时遇到问题。因为我的数据库是 MongoDB 所以我使用了这个包。
import Transaction from 'mongoose-transactions-typescript';
我正在开发 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
在上面的函数中,当我尝试使用 mongoose 的默认创建方法时,它仅插入单列数据,即使按如下方式传递完整数据也是如此
{
"name": "Test",
"userName":"test123",
"groupId": "1",
"commissionCount": 1,
"commissionAmount": 2,
"is_active": true
}
因此,如果有人知道如何使用打字稿或上述问题的解决方案在 MongoDB 中插入数据,请帮我解决这个问题?
谢谢
不知道你为什么要这样的代码结构,为了使用mongoose
为了正确使用 mongodb 带有 mongoose 的文档,我遵循的步骤是:
- 像这样创建猫鼬模型模式:
// 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()
}
现在您应该在用户集合中有了您的新文档
我已经为 crud API 实现了打字稿代码,但目前,我在使用 mongoose 包使用 API 插入数据时遇到问题。因为我的数据库是 MongoDB 所以我使用了这个包。
import Transaction from 'mongoose-transactions-typescript';
我正在开发 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
在上面的函数中,当我尝试使用 mongoose 的默认创建方法时,它仅插入单列数据,即使按如下方式传递完整数据也是如此
{
"name": "Test",
"userName":"test123",
"groupId": "1",
"commissionCount": 1,
"commissionAmount": 2,
"is_active": true
}
因此,如果有人知道如何使用打字稿或上述问题的解决方案在 MongoDB 中插入数据,请帮我解决这个问题?
谢谢
不知道你为什么要这样的代码结构,为了使用mongoose
为了正确使用 mongodb 带有 mongoose 的文档,我遵循的步骤是:
- 像这样创建猫鼬模型模式:
// 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()
}
现在您应该在用户集合中有了您的新文档