この追加履歴ページを入力した2人のクライアントから子ローレコード(追加履歴)をプッシュするとエラーが発生します。同時。 1つのクライアントだけ子レコードをプッシュするだけです(つまり、クライアント1にレコードをプッシュするためにヒストリページを追加し、レコードをプッシュするためにヒストリページを追加する)。ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:344:11)で送信された後にヘッダーを設定できません
AngularJSではレコードロック処理が必要ですか?
NodeJSサービスの誤差がある:それはまた、バックエンドが停止nodejsやニーズを再起動する原因と
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11)
at ServerResponse.header (/home/oracle/node/ang_backend1/node_modules/express/lib/response.js:718:10)
at ServerResponse.send (/home/oracle/node/ang_backend1/node_modules/express/lib/response.js:163:12)
at ServerResponse.json (/home/oracle/node/ang_backend1/node_modules/express/lib/response.js:249:15)
at /home/oracle/node/ang_backend1/routes/datas.js:53:21
at /home/oracle/node/ang_backend1/node_modules/mongoose/lib/model.js:3324:16
at /home/oracle/node/ang_backend1/node_modules/mongoose/lib/document.js:1924:15
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
。
HistoryaddController
は次のようになります。このコレクションの
.controller('HistoryaddController', function($scope, $cordovaNetwork, $ionicPopup, $rootScope, $filter, $state, $stateParams, Movie, $ionicLoading, $ionicPlatform, $ionicHistory, $http, $timeout) {
$scope.loadMovie = function() {
$scope.movie = Movie.get({ id: $stateParams.id }).$promise.then(function(results) {
console.log(results);
$scope.movie = results;
});
};
$scope.loadMovie();
$scope.themovie = {
details: '',
};
$scope.updateMovie = function() {
$scope.movie.Histories.push($scope.themovie);
$scope.movie.$update(function() {
$state.go('movies');
});
};
})
バックエンドのmongoモデルは次のとおりです。
var mongoose = require('mongoose');
var autoIncrement = require('mongoose-auto-increment');
mongoose.Promise = global.Promise;
var connection = mongoose.createConnection("mongodb://localhost:27017/mymongodb");
autoIncrement.initialize(connection);
var Schema = mongoose.Schema;
var DataSchema = new Schema({
sort: { type: Schema.Types.ObjectId, ref: 'Sort' },
custname: String,
problem: String,
opendate: { type: Date, default: Date.now },
enddate: { type: Date },
lastupdate: { type: Date },
assignedon: { type: Date },
openby: String,
updateby: String,
assignedto: String,
severity: String,
product: String,
srstatus: String,
reportby: String,
custowner: String,
vendorid: String,
Histories: [{
details: String
}]
});
DataSchema.plugin(autoIncrement.plugin, 'Data');
module.exports = mongoose.model('Data', DataSchema);
バックエンドのルートがある:あなたができる場合
var Data = require('../app/models/data'); // get the mongoose model
var express = require('express');
var router = express.Router();
router.route('/:id')
.put(function(req, res) {
Data.findOne({ _id: req.params.id }, function(err, data) {
if (err)
res.send(err);
for (prop in req.body) {
data[prop] = req.body[prop];
}
// save the movie
data.save(function(err) {
if (err)
res.send(err);
res.json({ message: 'Data updated!' });
});
});
})
<form name="myForm1">
<ion-view title="Add Detail">
<ion-header-bar align-title="center" class="bar-balanced">
<ion-nav-bar align-title="center" class="nav-title-slide-ios7 bar-balanced">
<ion-nav-back-button class="button-icon ion-arrow-left-c">
</ion-nav-back-button>
</ion-nav-bar>
</ion-header-bar>
<ion-content overflow-scroll="true" class="padding">
<div class="list" >
<label class="item item-input">
<input type="text" placeholder="customer" ng-model="movie.custname" required>
</label>
<label class="item item-input">
<input type="text" placeholder="problem" ng-model="movie.problem" required>
</label>
<label class="item item-input">
<textarea ng-trim="false" rows=8 placeholder="Details" ng-model="themovie.details" required></textarea>
</label>
</div>
<button class="button button-full button-balanced" clicked-disable ng-disabled="myForm1.$invalid" ng-click="updateMovie()">
Add
</button>
</ion-content>
</ion-view>
</form>
をおくりますp私は何を修正すべきか分からない。私が得る問題は、2つのクライアントアプリ(クライアントapp1とクライアントアプリ2)がこのHistoriesaddページ - >入力レコード - >保存を入力するときです。このエラーが発生します。 client1がこのHistoriesaddページ - >入力レコード - > saveを入力した場合。そして、client2はこのHistoriesaddページ - >入力レコード - > saveを入力します。このエラーは発生しません。つまり、最初のクライアントがレコードを正常に保存するまで、2番目のクライアントはHistroiesaddページに入ることができません。このエラーを回避することができます。私は、それがバックエンドノードの明示的な問題か、フォントの角かどうかわかりません。ありがとう
この追加履歴ページを同時に入力する2人のクライアントから子ローレコード(追加履歴)をプッシュするとエラーが発生します。 1つのクライアントだけ子レコードをプッシュするだけです(つまり、クライアント1にレコードをプッシュするためにヒストリページを追加し、レコードをプッシュするためにヒストリページを追加する)。 angularJSにレコードロック処理が必要ですか? –
この「履歴を追加」ページを同時に入力した2人のクライアントから、子行レコード(履歴を追加)をプッシュするとエラーが発生します。子レコードをクライアントごとに1つだけプッシュするだけです(つまり、クライアント1アプリにレコードをプッシュするためにヒストリページを追加し、クライアント2アプリにレコードをプッシュするためにヒストリページを追加する)。 angularJSにレコードロック処理が必要ですか? –
コードがStack Overflowで実行可能なときにコードスニペットを使用します。それ以外の場合は、コードサンプルの書式設定(インデント4スペース)を使用します。 –