私はmongoose 4.11.10を使用して、私は2つのモデルを宣言しました:User & Task。私のユーザモデルは次のとおりです。フォームの補完で使用する
let UserSchema = mongoose.Schema({
name: {
type: String,
required: true,
minlength: 1,
maxlength: 15
}
});
let User = mongoose.model("UserModel", UserSchema);
Userモデルからのフラグメント:
let TaskSchema = mongoose.Schema({
userName: {
type: mongoose.Schema.ObjectId,
ref: "User",
required: false,
minlength: [1, "Invalid name"],
maxlength: [15, "Too big name"]
}
});
let Task = mongoose.model("TaskModel", TaskSchema);
I'veはフォームを、持ってどこで入力すべてのこれらの値:サーバー側で
<p>Add new task: </p>
<form action="/api/tasks/" method="post">
Name:
<input type="text" name="name">
<br>
Definition:
<input type="text" name="definition">
<br>
Status:
<input type="text" name="status">
<br>
Responsible user:
<input type="text" name="userName">
<br>
Deadline:
<input type="date" name="deadline" >
<br><br>
<input type="submit" value="SEND">
</form>
私はコントローラを持っている:
api.post("/tasks/", (req, res) => {
let name = req.body.name;
let definition = req.body.definition;
let status = req.body.status;
let userName = req.body.userName;
let deadline = req.body.deadline;
if (userName.length < 1) {
Task.create({name: name}, {definition: definition}, {status: status}, {userName: "not delegated yet"}, {deadline: deadline})
.then(() => {
console.log("Insertion successful");
res.redirect("/api/tasks");
})
.catch(err => {
console.log("Cannot insert");
throw err;
})
} else {
Task.create({name: name}, {definition: definition}, {status: status}, {userName: userName}, {deadline: deadline})
.then(() => Task.findOne({name: name}).populate("userName"))
.then(() => {
console.log("Insertion successful");
res.redirect("/api/tasks");
})
.catch(err => {
console.log("Cannot insert");
throw err;
})
}
});
私は2つのスキーマをリンクしたい:私は指定されたユーザーのタスクを "委任"したいが、現在は()マングースメソッドが動作しない:(どうすればその問題を解決できますか?
ご協力いただければ幸いです!
nope :(この質問も未解決です –