3

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

但是,我缺乏对它的了解可能会阻止我以更轻松的方式做事。

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

我发现使用 JADE 动态渲染和填充表单非常容易,但是,在回来的路上,我发现自己通过使用 jQuery 发送表单的字符串化 JSON 表示来“手动”重建对象;在将其存储回数据库之前。

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

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

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

4

4 回答 4

1

和其他人一样,我肯定会推荐MongooseJS。当我开始尝试学习类似的堆栈时,它帮助了我。在服务器上,你可能有这样的东西:

// 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);
            }
        })
      }
    });

};

编辑* 显然 Mongoose 实际上有一个 findOneAndUpdate 方法,它与我上面写的更新模型的功能基本相同。你可以在这里阅读

于 2013-03-28T13:51:01.253 回答
1

我一直在使用LocomotiveJS, 的创建者Passport

机车有 Mongoose ORM支持
您修改本地 JS 对象并调用 save() 进行更新。
这符合您的需求吗?

这是使用此设置的博客示例:
https ://github.com/strongloop/sample-blog

于 2013-03-27T05:38:50.023 回答
0

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

于 2014-03-10T09:55:12.140 回答
0

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

于 2013-03-27T05:35:16.180 回答