質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Q&A

解決済

3回答

2238閲覧

MEANスタックで 1回のpostにより、複数のレコードを追加できますか?

TEA

総合スコア65

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

1グッド

0クリップ

投稿2015/05/11 08:46

編集2015/05/12 00:19

下記のようにmongoDBへ複数レコードを追加する処理を、
AngularJS の $resource (ngResource) のsaveメソッドから実装したいと思っております。

lang

1$ mongo 2connecting to: test 3... 4 5> db.users.insert([{name: "太郎", age:"20"},{name: "花子", age:"38"},...])

下記コードは実装中のjavascriptの一部です。
以下の記事を参考にさせていただきながら、作っているところです。
MongoDB+Express+AngularJS+Node.jsでシンプルなCRUDアプリ作成

1つのデータならば、追加できたのですが、複数のレコードの追加はうまくいきませんでした。Express初心者で説明が不十分かもしれませんが、何卒ご教授お願いいたします。

lang

1var app = angular.module('app', ['ngResource', 'ngRoute']); 2app.factory('Users', function($resource) { 3 return $resource('/api/users/:_id'); 4 }); 5app.controller('EditCtrl', ["$scope", "$routeParams", "$location", "Users" , function($scope, $routeParams, $location, Users) { 6 7 $scope.edit = function() { 8 9 //理想としては、一度に複数のobjectをmongoDBにinsertしたいと思っています。 10 $scope.users = [{ 11 name : "太郎", 12 age : "20" 13 }, 14 { 15 name : "花子", 16 age : "38" 17 } 18 ]; 19 20 //1つのレコード追加は、問題なくinsertできました。 21 // $scope.user = { 22 // name : "太郎", 23 // age : "20" 24 // }; 25 26 Users.save( $scope.users , function() { 27 $location.url('/'); 28 }); 29 }; 30}]);
izumeeeel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

書かれてあるクライアント側のjsは特に問題はなくて、おそらくサーバ側の保存処理が複数に対応してないのでは?

サーバ側スクリプトで
app.post("/api/users/:_id" ...)

のように書かれてるところをみるといいかもしれません

投稿2015/05/11 14:06

khirose

総合スコア251

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TEA

2015/05/12 03:08

khiroseさん、ご回答ありがとうございました。サーバー側app.jsのapp.post("/api/users/:_id" ...) を変更しましたところ、求める内容が動作しました。 ありがとうございます!
guest

0

naga3さん
khiroseさん

ご回答ありがとうございました!
アドバイスを元に色々試してみた結果、以下の内容で配列をinsertできました。khiroseさんからアドバイスを頂いた、サーバー側を変更してみました。

app.js の app.post("/api/users")の箇所の変更を以下のようにしました。

lang

1// 追加・更新 2app.post("/api/users", function(req, res) { 3 var user = req.body; 4 5 //入力された配列の確認 6 console.log("------- user -------"); 7 console.log("user length: " + user.length); 8 for(var i=0; i < user.length; i++){ 9 console.log(i + " -> " + user[i].name); 10 } 11 12 // 更新 13 if (user._id){ 14 user._id = mongodb.ObjectID(user._id); 15 users.save(user, function)(){ 16 res.send("update"); 17 } 18 }else{ 19 //追加 20 //users.save から users.insertに変更したところ、配列の追加ができました。 21 users.insert(user, function() { 22 res.send("insert"); 23 }); 24});

front/index.htmlのjsについては ご回答いただいたnaga3さんよりアドバイスを頂いたのですが、変更前の内容でも問題なく動作しているようでした(app.jsのconsole.logで配列を確認してみました)。こちらは以下のままでは何か不具合が出そうでしょうか?知識不足でご迷惑をおかけしますが、改めてアドバイスを頂けましたら幸いです。

lang

1return $resource('/api/users/:_id');

投稿2015/05/12 02:49

編集2015/05/12 09:05
TEA

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naga3

2015/05/12 03:41

普通に行けますね。すみません…勘違いのようです。 ngResourceで配列を意識しなければならないのはGETのときだけかも。
guest

0

間違い情報なので消しました…すみません。

投稿2015/05/11 23:28

編集2015/05/12 03:42
naga3

総合スコア1293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TEA

2015/05/12 03:04

naga3さん、ご回答ありがとうございました。記事は大変わかりやすく、参考にさせていただいております。本当にありがとうございます。 アドバイス頂いた内容についてですが、app.jsの方で確認しましたところ、変更前後で両者とも配列を渡せているようでした。何故でしょう… これはこれで問題ないということでしょうか。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問