1

我是 node.js 的新手。

我想问,我们如何使用猫鼬保存数据?

在这种情况下,我有 3 个文件夹来运行该过程

模型(在这个文件夹中,我们有 store.js)

var mongoose = require('mongoose');

mongoose.connect('mongodb://xxx:xxx@dharma.mongohq.com:10019/xxx');
var t_store = new mongoose.Schema({
   store_email : String
});

module.exports = mongoose.model('store', t_store);

路线(在这个文件夹中,我们有 signup.js)

var store = require('../models/store');

exports.form = function(req, res) {
  res.render('signup', {
    title: 'Sign Up'
  });
};

exports.submit = function (table_name) {
  return function(req, res, next) {
    var email = req.body.signup.email;
    console.log("name " + email);

    store.create({
        store_email: email
    });
  };
};

视图(在这个文件夹中,我们有 signup.ejs)

<form method='post' enctype='multipart/form-data'>
  <input type="text" id="email" name="signup[email]" placeholder="Your email address">
  <input type='submit', value='Sign Up'/>
</form>

这就是我到目前为止所做的。谢谢!

4

1 回答 1

0

建议您安装 express(除了 node.js 和 mongoose)并按照指南/教程进行操作。Express 将允许您使用类似 REST 的方法。

npm install -g express

从您的 app.js(应用程序设置文件)中,您可以定义路由并定义每个路由所属的方法/REST 调用。

我可以给你看一个删除的例子:

在我的 app.js 中:

app.post('/deleteActivity', activityList.deleteActivity.bind(activityList))

告诉应用程序发布到 /deleteActivity 将在 activityList 中使用方法 deleteActivity 进行处理。

在我的 activityList.js 中:

  deleteActivity: function(req,res) {
    var item = req.body.item;
    var deleted = item.activity;
    activity.remove({_id: deleted}, function(err){
    if(!err){
      console.log('Deletes ' + item.activity);
    }
    else {
      console.log('Could not delete' + item.activity);
    }
    });
    res.redirect('/');
   }

这里的 req.body.item 包含删除活动所需的所有数据。这是从我的 index.jade 文件发送的,如下所示:

form(action="/deleteActivity", method="post")
  select(name = "item[activity]")
    each activity in activities
      option(value=activity._id) #{activity.activityType}
  input(type="submit", value="Delete activity")

如您所见,数据使用用户提供的值绑定到请求。在这种情况下,activity._id 被传递给 deleteActivity。

在您的情况下,只需创建所需 Schema(mongoose) 的新对象并在其上使用 save 方法。

希望这可以帮助

于 2013-05-23T13:53:13.507 回答