@deadkEEper1

Как правидьно фэтчить модель?

И так, есть backbone view для всех юзеров. Возле каждого юзера есть кнопка-ссылка на backbone роут user/_id
<a href="#user/<%=user._id%>"> 
<button> more </button>


Вот BB роутер
define([
	'backbone',
	'./views/homePageView',
	'./views/logInView',
	'./views/userView',
	'./models/userModel'
		],

	function(Backbone, homePageView, logInView, userView, User) {


		var Router = Backbone.Router.extend({

			routes: {
				''     : 'homepage',
				'logIn': 'login',
				'user/:id': 'findUser'
			},

			initialize: function(){
				console.log('router inited')
				Backbone.history.start()
			},

			homepage : function(){
				 new homePageView;
			},

			login: function(){
				 new logInView;

			},

			findUser: function(id){
				 		console.log(id)

						var user = new User()
						user.fetch({_id: id})
						console.log(user)
			}
		})
		return  Router

	})


По роуту user/:id хочу достать конкретного юзера. Функция findUser принимает аргумент на ура. Но когда пытаюсь фетчить модель. Браузер ругаеться

GET localhost:3030/user 404 (Not Found)

Вот сервер роутер

var express = require('express');

var router = express.Router();



// router.use('/signIn',      require('./signInRouter'))
router.use('/login', 	   require('./logInRouter'))
router.use('/sessiontest', require('./sessionTestRouter'))
router.use('/logOut', 	   require('./logOutRouter'))
 router.use('/user',  	   require('./userRouter'))                                 ///ТУТ
router.use('/users',       require('./showAllUsers'))

module.exports = router


./userRouter.js

var express = require('express');
var UserMongo = require('../mongoModels/userMongo')

var userRouter = express.Router();





userRouter.route('/:id')
	.get(function(req, res){
		console.log(req.params)
		res.send()
	})


module.exports = userRouter


И в нем по-идеи должен найти в базе данных модель с _id = req.params.id, но так как браузер выдает ошибку не могу получить req.params.id

Подскажите что сделал неправильно. Спасибо.
  • Вопрос задан
  • 212 просмотров
Пригласить эксперта
Ответы на вопрос 1
@EvgenZZ
php, javascript developer
1.
test.user=Backbone.Model.extend({
initialize: function(options) {
this.options=options;
//this.fetch();
},
url: function() {
switch (this.options.mode){
case 0:{return this.options.host+'user/id/'+this.options.selector;}

}
},
parse: function(response) {
switch (this.options.mode){
case 0:{
var entry=new Object();
entry=response[0];
return entry;
}
}
}
});

2. в контроллере или функции test.user.fetch().done(function(response){'тут смотришь ответ от сервера'})

3. Или
Admin.SessionModel=Backbone.Model.extend({
urlRoot:'check',
initialize: function () {
var that = this;
// Hook into jquery
// Use withCredentials to send the server cookies
// The server must allow this through response headers
$.ajaxPrefilter(function( options, originalOptions, jqXHR) {
options.xhrFields = {
withCredentials: true
};
});
},
login: function(creds) {
// Do a POST to /api/session and send the serialized form creds
var that = this;
this.save(creds, {
success: function (model, resp) {
if (resp.success == false) {
alert(resp.message);
}
that.unset('password');
that.set(resp.data);
iApp.trigger("login:action:success");

iApp.radio.trigger('login_form:close');
},
error:function(model,resp){
iApp.trigger("login:action:error");
console.log('error')
}
});
},
logout: function() {
// Do a DELETE to /api/session and clear the client side data
var that = this;
this.destroy({
success: function (model, resp) {
model.clear({silent:true});
$.ajax({url:'logout'}).done(function(){
iApp.trigger("logout:action");
console.log('App log out')
})

// Set auth to false to trigger a change:logged_in event
// The server also returns a new csrf token so that
// the user can relogin without refreshing the page
that.set({logged_in: false});
}
});
},

getAuth: function(callback) {
// getAuth is wrapped around our router
// before we start any routers let us see if the user is valid
var that=this;
this.fetch().done(function (data) {
that.set('status', data.status);
//console.log(data)
return data;
});

}

})

4. или если надо пояснения пиши в личку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы