Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MongoDB、Node.js(+;express)和Jade创建MVC表单_Node.js_Mongodb_Express_Pug - Fatal编程技术网

如何使用MongoDB、Node.js(+;express)和Jade创建MVC表单

如何使用MongoDB、Node.js(+;express)和Jade创建MVC表单,node.js,mongodb,express,pug,Node.js,Mongodb,Express,Pug,我的任务是使用上面的堆栈创建一个简单的CRUD应用程序 然而,我对it知识的缺乏可能会妨碍我以更轻松的方式做事 我主要关心的是更新。我有一个从数据库加载的对象(文档)。这些字段需要映射到表单中,并且在修改和保存表单内容时,必须更新数据库 我发现使用JADE动态地呈现和填充表单非常容易,然而,在返回的过程中,我发现自己通过使用jQuery发送表单的字符串化JSON表示来“手动”重建对象;在将其存储回数据库之前 是否有一些自动工具为我执行此映射? 给定一个JSON对象和一个表单,它将处理填充并将信息

我的任务是使用上面的堆栈创建一个简单的CRUD应用程序

然而,我对it知识的缺乏可能会妨碍我以更轻松的方式做事

我主要关心的是更新。我有一个从数据库加载的对象(文档)。这些字段需要映射到表单中,并且在修改和保存表单内容时,必须更新数据库

我发现使用JADE动态地呈现和填充表单非常容易,然而,在返回的过程中,我发现自己通过使用jQuery发送表单的字符串化JSON表示来“手动”重建对象;在将其存储回数据库之前

是否有一些自动工具为我执行此映射? 给定一个JSON对象和一个表单,它将处理填充并将信息保存回模型中

作为参考,我来自SpringMVC+Hibernate的背景


指向教程甚至简单示例的指针都可以。提前谢谢

我不会在客户端使用jQuery构造JSON对象。最好将该实现留给服务器端。您可以轻松地从post变量生成json对象并保存该对象。另外,我不知道您是否需要它,但mongoose是一个很好的ODM(对象文档映射器),它可以帮助您创建集合文档的模型

我一直在使用,由

机车有猫鼬ORM。
修改本地JS对象并调用save()进行更新。
这符合你的需要吗

下面是一个将此设置用于博客的示例:

像其他人一样,我绝对推荐。当我开始尝试学习类似的堆栈时,它帮助了我。在服务器上,您可能有如下内容:

// Define schema
var userSchema = mongoose.Schema(
    { name: 'string',
      description: 'string',
      email: 'string',
      date: { type: Date, default: Date.now },
    });

// Instantiate db model
var User = mongoose.model('User', userSchema);

// POST from client
exports.addUser = function (req, res) {

    // req.body contains the json from the client post
    // as long as the json field names are the same as the schema field names it will map the data automatically
    var newUser = new User(req.body); 

    newUser.save(function (err) {
      if(err) {
          return res.json({error: "Error saving new user"});
      } else {
        console.log("success adding new user");
        res.json(newUser);
      }

    });
};

// PUT from client
exports.updateUser = function(req, body) {
    // this contains the updated user json
    var updatedUser = req.body;

    // here we lookup that user by the email field
    User.findOne({ 'email': updatedUser.email }, function (err, user) {
      if(err) {
        return res.json({error: "Error fetching user" });
      }
      else {
        // we succesfully found the user in the database, update individual fields:
        user.name = updatedUser.name;
        user.save(function(err) {
            if(err) {
                return res.json({error: "Error updating user"});
            } else {
                console.log("success updating user");
                res.json(updatedUser);
            }
        })
      }
    });

};
Edit*显然Mongoose实际上有一个findOneAndUpdate方法,它的作用与我在上面写的更新模型的方法基本相同。你可以读到它

试试看
一个简单的包,支持带有mvc模板的express和orm

不确定是否有帮助?这正是我想要的:var newUser=newUser(req.body);谢谢不完全是我想要的,但我将来肯定会使用机车