我正在开发一个用于管理课程及其教程的管理系统。
我们说我有以下架构:
router.get('/courses/:code/tutorials/:number/edit', function (req, res) {
Course.findOne({
code: req.params.code
}).populate({
path: 'tutorials', match: { number: req.params.number }
}).exec(function (err, course) {
res.render('admin/tutorial', { course: course, tutorial: course.tutorials[0], method: 'put' });
});
});
每个课程都有一个名称,例如Web编程简介和唯一代码,例如CSCC09。每个教程都有一个非唯一号码,例如0001.两门课程将有相同编号的教程。但是,课程中的每个教程都有不同的编号。
目前,当用户编辑教程时,它将通过以下路径:
Course.findOne({ code: req.params.code}, function (err, course) {
Tutorial.findOne({ number: req.params.number }, function (err, tutorial) {
// ...
});
});
我这样做的原因是为了确保匹配的教程适用于相应的课程。
那么,对于我的问题,是否有更简洁的方法来查询相关模型?
我更愿意做类似下面的事情,但我不能,因为匹配的教程可能不适用于相关课程:
public static class ModApi
{
[DllImport("user32.dll", EntryPoint = "SendMessageTimeout", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern uint SendMessageTimeoutText(IntPtr hWnd, int Msg, int countOfChars, StringBuilder text, uint flags, uint uTimeoutj, uint result);
public static string GetText(IntPtr hwnd)
{
var text = new StringBuilder(1024);
if (SendMessageTimeoutText(hwnd, 0xd, 1024, text, 0x2, 5000, 0) != 0)
{
return text.ToString();
}
MessageBox.Show(text.ToString());
return "";
}
}
我知道我可以使用文档的ID,但是我希望有可读的URL(以便用户可以从浏览器的URL栏快速转到页面)。
答案 0 :(得分:-1)
你应该使用mongoose-relationship librarie。它使它更容易。
var mongoose = require("mongoose"),
Schema = mongoose.Schema,
relationship = require("mongoose-relationship");
var ParentSchema = new Schema({
children:[{ type:Schema.ObjectId, ref:"Child" }]
});
var Parent = mongoose.model("Parent", ParentSchema);
var ChildSchema = new Schema({
parent: { type:Schema.ObjectId, ref:"Parent", childPath:"children" }
});
ChildSchema.plugin(relationship, { relationshipPathName:'parent'});
var Child = mongoose.model("Child", ChildSchema)
var parent = new Parent({});
parent.save();
var child = new Child({parent:parent._id});
child.save() //the parent children property will now contain child's id
child.remove() //the parent children property will no longer contain the child's id