【发布时间】:2017-03-25 17:14:19
【问题描述】:
我刚开始使用 mongoose 和 MongoDB。我正在开发一个用于保存 Todo 列表的 React-Redux 应用程序。我正在使用 webpack 打包所有内容。
在多个文件中连接到我的 MongoDB 的最佳方式是什么?例如,当我最初的 app.jsx 运行时,然后在我的 reducers.jsx 文件中保存到数据库中...
我知道 mongoose 保持持久连接,但每当我尝试使用时
var mongoose = require('mongoose');
我收到这个 webpack 错误
WARNING in ./~/mongoose/lib/drivers/index.js
Critical dependencies:
8:11-74 the request of a dependency is an expression
@ ./~/mongoose/lib/drivers/index.js 8:11-74
当我创建一个单独的测试应用程序时,我可以使用
成功写入 MongoDBmongoose.connect() and the .save() methods, 当所有内容都保存在一个文件中时。
谢谢
App.jsx
var React = require ('react');
var ReactDOM = require ('react-dom');
var {Route, Router, IndexRoute, hashHistory} = require ('react-router');
var {Provider} = require('react-redux');
var TodoApp = require('TodoApp');
var actions = require('actions');
var store = require('configureStore').configure();
var TodoAPI = require('TodoAPI');
// Connect to MongoDB using mongoose
var url = 'mongodb://joe:test@ds147487.mlab.com:47487/reacttodo';
var mongoose =require('mongoose');
mongoose.connect(url);
store.subscribe(()=>{
var state = store.getState();
console.log('new state',state);
TodoAPI.setTodos(state.todos);
});
var initialTodos = TodoAPI.getTodos();
store.dispatch(actions.addTodos(initialTodos));
// load foundation
$(document).foundation();
//app css
require('style!css!sass!AppStyles');
ReactDOM.render(
<Provider store={store}>
<TodoApp/>
</Provider>,
document.getElementById('app')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
【问题讨论】:
-
我这里可能错了,但我不明白您为什么要尝试使用前端框架连接到 mongodb?
-
我还能如何连接?
-
你应该在 node/express 的服务器端执行此操作
-
那么我最初的
connect()应该在server.js 中吗? -
是的,通常它在
app.js文件或您用于 init 的其他文件中调用
标签: node.js mongodb mongoose webpack react-redux